2014-03-30工作日志:我的编程风格

94 篇文章 0 订阅
90 篇文章 1 订阅

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;
又如:
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;
}
而不是将每个dwReturn都换为return。

7、DWORD dwResult;变量的前两个字符或首字符一般是类型的前两个字符的小写。

8、修改完一次,就要更改一次版本号:要每次第三位增加2。


9、使用vc做工程时,往往要调试两种模式,将MBCS改为_UNICODE,UNICODE。

10、必须考虑argc==1或argc==2或argc>2,必须考虑细一点儿,这就是规范。

11、如果某个函数的返回值是一个变量,且这个变量开辟了一段内存空间,则在调用这函数之后,必须要释放掉这个函数赋予返回值的变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值