四、程序健壯性:
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、對不同的硬件與軟件的函數要做不同的處理。