編碼規範的核心目標統一:在高質量完成需求的同時,保證代碼的可讀性、可維護性、可移植性。本文整理自項目組經驗,參考 GNU、C++ Core Guidelines、Google Style Guide 等主流規範,不適用於所有場景,請按需採納。
#include <xxx/yyy.h>)#include "xxx.h")*.h,內聯文件:*.inl,實現文件:*.cppDiyMainView.cpp)或全小寫,避免無意義縮寫(XImage.cpp ❌)#ifndef MODULE_FILE_H
#define MODULE_FILE_H
// 1. 包含塊
// 2. 宏定義塊
// 3. 全局常量/變量
// 4. 類型定義
// 5. 類定義
// 6. 內聯函數
#endif // MODULE_FILE_H // 行尾註釋
#include、宏、類、全局常量/變量、函數之間:兩個空行// TODO、// NOTE、// DEBUG、// end for/while#else/#endif 加行尾註釋i/I)、不同作用域重名、數字編號(Value1/Value2)Min/Max、Get/Set、Begin/End| 類型 | 前綴 | 示例 |
|---|---|---|
| 類/結構/枚舉/聯合 | T/C/M/R | TPoint, CWindow, IDrawable |
| 函數 | 動詞開頭 | HandleTimerEvent(PascalCase) |
| 成員變量 | m_ | mBuffer |
| 函數參數 | a | aBuffer |
| 局部指針 | p | pBuffer |
| 全局變量 | g_ | gConfig |
| 循環變量 | 單字母 | i, j, k |
移植/開源代碼保持原風格,不強制統一。
:: -> . 前後不加空格;, ; 前不加空格{ 另起一行if/for/while/do/try/catch:{ 同行或另起,執行語句必須加 { }(防修改出錯)else:} else { 同行case 與 switch 對齊case 用 { } 包裹default 分支break 必加註釋virtualprivate 拷貝構造/賦值運算符* & 緊貼類型:int* p、int& ref==/!=enum 替代常量組,拒絕魔鬼數字union、無名類型、強制轉換const T&,需修改用 T&,簡單類型傳值const 成員函數盡量多用new/delete、new[]/delete[] 成對使用nullptr 防野指針do-while(0) 宏包裹多語句為單語句#include++i 優於 i++(避免臨時對象)#include 文件名視為大小寫敏感規範非束縛,而是團隊協作的「契約」。好的規範讓代碼可讀、可理、可改、可測。建議團隊根據項目特點裁剪形成《項目編碼規範》,配合 Code Review 與靜態分析工具(Clang-Tidy、Cppcheck)落地執行。