1、头文件和c文件必须引用尧哥的common文件夹。
2、c/c++文件包含的头文件,也尽量和common文件夹中的文件所包含的头文件一致。
3、尽量多留几行空白行,更美观大方。
4、必须保留注释,养成好习惯。
5、在头文件中,要善于使用#ifndef的语句,防止头文件被调用多次而出错。要学会在#ifndef和#endif之间写上对应同名的cpp文件里面的函数的声明,并要会用尧哥的EXTERN_C。
6、程序尽量显得简洁,不要写很多句return语句,可以直接定义一个变量,把要return的内容存在变量中。
如果某些地方均需要释放内存并返回,则可以挑出他们的共同点,找同类一起释放,如:
if (lpCheckOut) { HF_MemFree(lpCheckOut); } return dwReturn;
或者是用goto语句,如:又如:lpResultFilePath=(LPTSTR)HF_MemAlloc(sizeof(TCHAR)*(dwCharCount+dwSplitCount+1)); if (!lpResultFilePath) { LI_INFOPRINT(__HF__ TEXT("HF_GetDoubleSplit:HF_MemAlloc fail\n")); goto exit; } dwSplitIndex=0; for (dwCharIndex=0;dwCharIndex<dwCharCount;dwCharIndex++) { lpResultFilePath[dwCharIndex+dwSplitIndex]=lpcFilePath[dwCharIndex]; if (lpcFilePath[dwCharIndex]==TEXT('\\')) { dwSplitIndex++; lpResultFilePath[dwCharIndex+dwSplitIndex]=TEXT('\\'); } } lpResultFilePath[dwCharCount+dwSplitCount]=TEXT('\0'); exit: return lpResultFilePath;
而不是将每个dwReturn都换为return。DWORD DLL_Test(IN LPTSTR lpFilePath,IN LPTSTR lpMd5Content) { DWORD dFilePath; DWORD dwReturn=DM_DT_FILENOEXIST_ERROR; LPTSTR lpCheckOut=NULL; if (lpFilePath==NULL) { dwReturn=DM_DT_INPUTNULL_ERROR; } dFilePath=GetFileAttributes(lpFilePath); if (dFilePath!=INVALID_FILE_ATTRIBUTES) //验证文件路径是否正确 { if (!(dFilePath&FILE_ATTRIBUTE_DIRECTORY)) { lpCheckOut=Md5Making(lpFilePath); if (lpCheckOut==NULL) { dwReturn= DM_DT_MD5CHECK_ERROR; } if (lpMd5Content!=NULL) { BOOL bCheckResult=FALSE; if (stricmp(lpCheckOut,lpMd5Content)==0) { bCheckResult=TRUE; } if (bCheckResult) { dwReturn= DM_DT_SUCCESS; } else { dwReturn= DM_DT_CHECKDIFFER_ERROR; } } else { _tprintf(TEXT("%s"),lpCheckOut); dwReturn= DM_DT_SUCCESS; } } else { dwReturn= DM_DT_FILEILLEGAL_ERROR; } } else { dwReturn= DM_DT_FILENOEXIST_ERROR; } if (lpCheckOut) { HF_MemFree(lpCheckOut); } return dwReturn; }
7、DWORD dwResult;变量的前两个字符或首字符一般是类型的前两个字符的小写。
8、修改完一次,就要更改一次版本号:要每次第三位增加2。
9、使用vc做工程时,往往要调试两种模式,将MBCS改为_UNICODE,UNICODE。
10、必须考虑argc==1或argc==2或argc>2,必须考虑细一点儿,这就是规范。
11、如果某个函数的返回值是一个变量,且这个变量开辟了一段内存空间,则在调用这函数之后,必须要释放掉这个函数赋予返回值的变量。