关于编程风格的讨论4

四、程序健壮性:

1、函数的返回值规范:

对于函数的返回位置,尽量保持单一性,即一个函数尽量做到只有一个返回位置。(单入口单出口)。

要求大家统一函数的返回值,所有的函数的返回值都将以编码的方式返回。

例如编码定义如下:

#define CM_POINT_IS_NULL CMMAKEHR(0X200)
:
:
建议函数实现如下:
long 函数名(参数,……)
{
long lResult; //保持错误号
lResult=CM_OK;
//如果参数有错误则返回错误号
if(参数==NULL)
{
lResult=CM_POINT_IS_NULL;
goto END;
}
……
END:
return lResult;
}

2、关于goto的应用:

对goto语句的应用,我们要求尽量少用goto语句。对一定要用的地方要求只能向后转移。

3、资源变量的处理(资源变量是指消耗系统资源的变量):

对资源变量一定赋初值。分配的资源在用完后必须马上释放,并重新赋值。

例:

long * plAllocMem;//定义一个分配内存的变量。
plAllocMem=(long*)calloc(40, sizeof( long ));//分配一段内存。
//处理分配内存错误
if(plAllocMem==NULL)
{
lResult=CM_MEM_ALLOC_FAILED;
goto END;
}
……
使用内存
……
//释放资源变量,并重新赋值。
if(pAllocMem!=NULL)
{
free(plAllocMem);
pAllocMem=NULL;
}

4、对复杂的条件判断,为了程序的可读性,应该尽量使用括号。

例:if(((szFileName!=NULL)&&(lCount>=0)))||(bIsReaded==TRUE))

五、可移植性:

1、高质量的代码要求能够跨平台,所以我们的代码应该考虑到对不同的平台的支持,特别是对windows98和windowsnt的支持。

2、由于C语言的移植性比较好,所以对算法函数要求用C代码,不能用C++代码。

3、对不同的硬件与软件的函数要做不同的处理。