/*
聲明:
本博客參考資料:華為代碼綜合規范文檔 - 百度文庫 (baidu.com)
以下文章摘錄了我自己平時寫代碼沒有注意到的點。
*/
華為之代碼規范
一、代碼排版規定
1.程序塊要采用縮進風格編寫,縮進空格數為4個。
2.相對獨立程序塊之間、變量闡明之后必要加空行。
3.較長語句(>80字符)要提成多行書寫(在循環、判斷等語句中的較長表達或者語句也是如此),長表達式要在低優先級操作符處划分新行,操作符放在新行之首,划分出新行要進行恰當縮進,使排版整潔,語句可讀。
4.若函數或者過程中參數過長,要進行恰當划分。
5.不允許把各種短語句寫在一行中,即一行只寫一條語句。
6.if, for, do, while, case, switch, default等語句自占一行,且無論語句多少都要加花括號{}。
7.對齊只使用空格鍵,不使用TAB鍵。
8.函數或過程開始、構造定義及循環、判斷等語句中的代碼都要采用縮進風格,case語句下狀況解決語句也要遵從語句縮進規定。
9.程序塊分界符(如C/C++語言大括號'{'和'}')應各獨占一行並且位於同一列,同步與引用它們語句左對齊。在函數體開始、類定義、構造定義、枚舉定義以及if、for、do、while、case、switch、case語句中程序都應該采用上述縮進方式。如下是正確的:
if條件) { ... } else { ... }
10.兩個以上核心字、變量、常量進行對等操作時,它們之間操作符之前、之后或者先后要加空格;進行非對等操作時,如果是關系密切紀實操作符(如-->),后不應加空格。
二、注釋規范
1.普通狀況下,源程序有效注釋量必須在20%以上。
2.注釋內容要清晰、明了,含義精確,防止注釋二義性。
3.避免在注釋中使用縮寫。
4.注釋應與其描述代碼相近,對代碼注釋應放在其上方或右方(對單條語句注釋)相鄰位置,不可放在下面,如放於上方則需與其上面代碼空行隔開。
5.對於所有有物理含義的變量、常量,如果其命名不是充分自注釋,在聲明時都必須加以注釋,闡明其物理含義。變量、常量、宏注釋應放在其上方相鄰位置或右方。
6.數據構造聲明(涉及數組、構造、類、枚舉等),如果其命名不是充分自注釋,必要加以注釋。對數據構造注釋應放在其上方相鄰位置,不可放在下面;對構造中每個域注釋放在此域右方。
7.全局變量要有詳細注釋,涉及對其功能、取值范疇、哪些函數或過程存取它以及存取時注意事項等闡明。
8.注釋應與所描述內容進行同樣縮排。
9.將注釋與其上面代碼用空行隔開。
10.對變量定義和分支語句(條件分支、循環語句等)必要編寫注釋。
11.避免在一行代碼或者表達式中間插入注釋。
12.通過對函數或過程、變量、構造等對的命名以及合理地組織代碼構造,使代碼成為自注釋。
13.在代碼功能、意圖層次上進行注釋,提供有用、額外信息。
14.在程序塊結束行右方加注釋標記,以表明某程序塊結束。
15.闡明性文獻頭部應進行注釋,注釋必要列出:版權闡明、版本號、生成日期、作者、內容、功能、與其他文獻關系、修改日記等,頭文獻注釋中還應有函數功能簡要闡明。
16.源文獻頭部應進行注釋,列出版權闡明、版本號、生成日期、作者、模板功能、重要函數及其功能、修改日記等。
17.函數頭部應進行注釋,列出:函數目/功能、輸入參數、輸出參數、返回值、調用關系(函數、表)等。
18.注釋格式盡量統一,建議使用/*......*/。
19.注釋應考慮程序易讀及外觀排版因素,使用語言若是中、英兼有,建議多使用中文,除非能用非常流利精確英文表達。
三、標記符命名規范
1.標記符命名要清晰、明了,有明確含義,同步使用完整單詞或人們基本可以理解的縮寫,避免使人產生誤解。
如下單詞縮寫可以被人們基本承認:
temp 可縮寫為 tmp; flag 可縮寫為 flg
2.命名中若使用特殊商定或縮寫,要有注明闡釋。
3.自己特有命名風格,要自始至終保持一致,不可來回變化。
4.對於變量命名,禁止取單個字符(如i, j, k, ...),建議除了要有詳細含義外,還能表明其變量類型、數據類型等,但i, j, k作局部循環變量是容許的。
5.變量命名要與所使用的系統風格保持一致。
6.在同一軟件產品內,應規划好接口某些標記符命名,防止編譯、鏈接時產生沖突。
7.用對的反義詞組命名具備互斥意義變量或相反動作函數等。
四、可讀性
1.不要使用難懂技巧性很高的語句。