Last active
July 27, 2017 06:24
-
-
Save dougpuob/56c97ef0e89baf89ce409585705fafdb to your computer and use it in GitHub Desktop.
[CodeReview] _ZipZipMgr_CalcLocalFileEntrySize()
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ------------------------------------------------------------------------------------------- | |
// Original | |
// ------------------------------------------------------------------------------------------- | |
static | |
size_t | |
_ZipZipMgr_CalcLocalFileEntrySize( | |
IN ZIPMGR_MODULE* pThis, | |
IN ZIPMGR_LOCAL_FILE_ENTRY* pLocalFileEntry | |
) | |
{ | |
bool bStatus = true; | |
ZIPMGR_OBJECT* pZipMgrObject = (ZIPMGR_OBJECT*)pThis; | |
PKZIP_LOCAL_FILE_HEADER* pLocalFileHdr = NULL; | |
size_t nLocalFileEntrySize = 0; | |
TRACEP_ENTRY(); | |
if (IS_NULL(pThis) || IS_NULL(pLocalFileEntry)) | |
{ | |
bStatus = false; | |
TRACEP_STATUS_ALERT(false, ERRENUM_FUNCTION_NULL_PARAMETER); | |
TRACEP_LEAVE_STATUS(false); | |
return 0; | |
} | |
pLocalFileHdr = &pLocalFileEntry->LocalFileHdr; | |
nLocalFileEntrySize = pZipMgrObject->CalcLocalFileHdrSize(pThis, pLocalFileHdr) + | |
pLocalFileHdr->u32CompressedSize; | |
if (true == pLocalFileHdr->GeneralPurposeBitFlag.Bits.DataDescriptor) | |
{ | |
nLocalFileEntrySize += sizeof(pLocalFileEntry->DataDescriptor); | |
} | |
TRACEP_LEAVE_STATUS(bStatus); | |
return nLocalFileEntrySize; | |
} | |
// ------------------------------------------------------------------------------------------- | |
// Refactored | |
// ------------------------------------------------------------------------------------------- | |
static | |
size_t | |
_ZipZipMgr_CalcLocalFileEntrySize( | |
IN ZIPMGR_MODULE* pThis, | |
IN ZIPMGR_LOCAL_FILE_ENTRY* pLocalFileEntry | |
) | |
{ | |
ZIPMGR_OBJECT* pObject = (ZIPMGR_OBJECT*)pThis; | |
size_t nLocalFileEntrySize = 0; | |
TRACEP_ENTRY(); | |
if (IS_NULL(pThis) || IS_NULL(pLocalFileEntry)) | |
{ | |
TRACEP_STATUS_ALERT(false, ERRENUM_FUNCTION_NULL_PARAMETER); | |
TRACEP_LEAVE_STATUS(false); | |
TRACEP_LEAVE_STATUS(false); | |
return 0; | |
} | |
else | |
{ | |
PKZIP_LOCAL_FILE_HEADER* pHeader = &pLocalFileEntry->LocalFileHdr; | |
size_t nLocalFileEntrySize = pObject->CalcLocalFileHdrSize(pThis, pHeader) + | |
pHeader->u32CompressedSize; | |
if (true == pHeader->GeneralPurposeBitFlag.Bits.DataDescriptor) { | |
nLocalFileEntrySize += sizeof(pLocalFileEntry->DataDescriptor); | |
} | |
TRACEP_LEAVE_STATUS(true); | |
return nLocalFileEntrySize; | |
} | |
} | |
/* | |
1.直接在if或else裡return: | |
這基本上是缺點,但因此能將幾個變數的存活的範圍。 | |
2.將變數名稱`pZipMgrObject`改為`pObject`: | |
因為Object這類的變數名稱是唯一的,這樣命名會更清楚。 | |
3.將變數名稱`pLocalFileHdr`改為`pHeader`: | |
因為Header這類的變數名稱是唯一的,這樣命名會更清楚。 | |
*/ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment