關於編程風格的討論4

來源:互聯網
上載者:User

四、程式健壯性:

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、對不同的硬體與軟體的函數要做不同的處理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.