C/C++代碼規範命名
命名,包括檔案名稱、類名、結構名、類型名、函數名、變數名、參數名等都是程式設計中重要的一部分。一個好的名稱,體現了一個深思熟慮的過程,同時也 能夠協助別人更好地理解開發人員的思路。如果發現程式中,充滿了a, b, c, x, y, z, tmp這種命名的變數,這時候就需要仔細的考慮自己的實現是否有問題。
類(結構)名
- 類名必須是名詞,類名必須明確表示這個類代表了什麼。
- 如果類名超過3個單詞,說明這個類有可能需要拆分了。
- 不要把父類的名字帶到子類中。
- 類名加上尾碼也是一種選擇。如下載代理類,可以寫為DownloadProxy。
- 類名首字母大寫;用大寫字母分隔單詞,除單詞的首字母外,全部小寫;類名中不要出現底線“_”。
類(結構)屬性名稱
- 屬性由成員首碼”m_“屬性,屬性名稱採用匈牙利命名規範。
方法
- 方法與函數執行一個任務,因此應當用動詞來命名。比方說,DumpDataToFile()就要好於DataFile()。
- 方法名首字母大寫;用大寫字母分隔單詞,除單詞的首字母外,全部小寫,方法名中不要出現底線。
函數
- 方法與函數執行一個任務,因此應當用動詞來命名。
- 函數名全部小寫,單詞之間用底線分隔。
方法與函數參數名
- 首字母小寫。
- 除了第一個單詞,所有單詞的首字母大寫。
- 名稱中不應出現”_”。
類庫名
- 如果使用C書寫類庫,或在C++不使用namespace書寫類庫,為了避免命名衝突,需要在類名,結構名,函數名前加上類庫名首碼。類庫名應當簡潔、明確。 如:
ImEgg* ImEgg_new();
變數名
指標變數
- 指標變數應在類型前加上p首碼,其後變數名命名規則不變。
- *號永遠靠近類型,一行聲明中只出現一個指標變數。 如:
Point* p_point;
引用變數
- 引用變數應在類型前加上r首碼,其後變數名命名規則不變。
全域變數
- 全用變數應使用g_屬性描述,其後變數名命名規則不變。 如:
ImLog4c* g_pLogger;
靜態變數
- 靜態變數應使用s_屬性描述,其後變數名命名規則不變。
ImLog4c* s_pLogger;
枚舉類型
宏
集合名稱
格式{}規則
()規則
縮排規則
- 縮排永遠為4。
- 用空格代替tab。
- Tab永遠用4。
- 如果縮排超過5層,考慮代碼最佳化。
列長度
- 一列不應該超過80個英文字元。
- 一個聲明佔一行
- 一個聲明佔一行。
三元運算式
標頭檔順序
- 標頭檔應當按照與功能的特點性從高到低排列。順序為
- 目前的目錄的標頭檔。
- 自行開發庫的標頭檔。
- 第三方庫的標頭檔。
- 標準C++標頭檔。
- 標準C標頭檔。
空格
類與結構類檔案與結構檔案命名
- 公有類,C中用以類比類的結構,需要位於一個獨立的檔案中。
- 檔案名稱與公有類名,C中用以類比類的結構名相同。
類與結構標頭檔布局
- 檔案描述,使用Doxygen文法。
- 標頭檔保護宏。
- 標頭檔。
- 類或結構描述,使用Doxygen文法。
- 類或結構名。
- 屬性描述,使用Doxygen文法。以下每個屬性或方法都要求對應一個描述。
- 屬性聲明。
- C++與身命周期相關函式宣告。C++中的構造方法,析構方法以及Factory 方法。
- C++操作符重載。
- C++訪問器,get與set方法。