17、C/C++編程規範精述

來源:互聯網
上載者:User

C/C++編程規範精述

(匈牙利命名法)

1、排版上不同小結構間要空行分開,子邏輯項相對父邏輯項要縮排;{及if,while等判斷語句應獨佔行並對齊,且後加空格以顯突出。

2、注釋位於相應代碼上面或右旁邊。且與其它代碼空行或空格隔開。

3、變數命名風格:採用UNIX 的全小寫加底線的風格或大小寫混排的方式,不要使用大小寫與底線混排的方式,但用作特殊標識如標識成員變數或全域變數的m_和g_,其後加上大小寫混排的方式是允許的。

定義標識符(變數名/函數名)應體現code is document:類型的第一個字母小寫組合 + 有意義的單詞。全域變數和函數名前應加模組名。

如DWORD dwSum = 0;

定義變數應當初始化,尤其是在使用前。

全域變數/靜態變數要注意可重新進入性(經過處理才可以)。結構定義應當儘是以4位元組(32位CPU一個指令就可以存取)對齊的。typedef 結構體時,不應當只定義指標。

注意一下宏定義:#define MPPLNX_DUMP_READ_WRITE_CDB(x) ...

註:可重新進入性是指函數可以被多個任務進程調用;一個可重新進入的函數簡單來說就是可以被中斷的函數,也就是可以在這個函數執行的任何時刻中斷它,OS調度轉入去執行另外一段代碼,而返回控制時不會出現錯誤;而不可重新進入的函數由於使用了一些系統資源,比如全域變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問題。

滿足下列條件的函數多數是不可重新進入的:

1) 函數體內使用了靜態資料結構;

2) 函數體內調用了malloc()或者free()函數;

3) 函數體內調用了標準I/O函數。

4、語句結構上,涉及有意義的常量,應當用枚舉或宏來代替;常量放在變數的左邊;用小括弧來體現優先順序。<<等邏輯關鍵字前後加空格。函數功能應當單一。

輸入參數的合法性檢查:

1)外部模組或者使用者輸入的參數;

2)從物理鏈路上接收到的資料。

5、可測性上,代碼自始至終只有一份,不存在開發版本和測試版本;測試與最終發行的版本是通過編譯開關的不同來實現,編譯開關要規範統一。

使用斷言來發現軟體問題;注意:在Release版本下,assert被定義成空操作(不執行),所以如下寫法是不對的:assert(E1T1_OK == E1T1_SetDefaultFramingMode());

6、程式效率上,迴圈體內工作量最小化,被訊號量保護的地區應該儘可能小。

7、品質上,記憶體配置上,一般秉承誰申請,誰釋放,也樣:檔案控制代碼;尤其是有異常退出的地方。記憶體釋放後,一定要把指標置為NULL。

記憶體越界問題。

Unix下,多線程的中的子線程退出必需採用主動退出方式,即子線程應return出口。

不要濫用不等于禁止使用。goto使用的注意事項:

• Single entry, single exit? – use goto

• Don’t use more than one goto labels

• Use goto’s that go forward, not backward

• Make sure a goto doesn’t create unreachable code

用宏定義運算式時,要使用完備的括弧;參數可能發生變化的運算式不要使用宏。

8、類屬性的聲明應按照如下順序常量 -> 靜態變數 -> 非靜態變數public -> protected -> private

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.