首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++ 程式風格指南:命名、排版、註釋與自成檔代碼規範

     編輯:VC 教學

文件組織

  • 頭文件:.h (C++ 建議 .hpp) — 類/結構/聯合聲明、枚舉、#define/constexpr、typedef/using。
  • 實現文件:.cpp (Windows) / .cc (Unix) — 函數/方法定義。
  • 文件頁眉:版權、作者、日期、模組說明、版本歷史、專案歸屬。

符號標準讀音 (團隊溝通統一)

命名約定

符號標準名別名
{ }brace / curly brace花括號
( )parenthesis / paren圓括號
[ ]bracket方括號
.dot / period點
->arrow箭頭
::scope resolution作用域解析 / 雙冒號
*asterisk / star / pointer星號 / 指針
&ampersand / reference / address-of引用 / 取址
~tilde按位取反 / 析構函數前綴
#pound / hash井號 / 預處理指令
實體風格範例備註
變量/函數參數lowerCamelCaseuserName, maxCount前綴可選 (m_ 成員, g_ 全局, s_ 靜態)
類/結構/枚舉/類型別名UpperCamelCaseUserAccount, ErrorCode
成員函數lowerCamelCasegetUserName()
常量/宏/枚舉值UPPER_SNAKE_CASEMAX_BUFFER_SIZE, RED
命名空間lower_snake_casenetwork::http短小、有意義
模板參數UpperCamelCase 或單大寫字母typename T, class Allocator
文件名lower_snake_caseuser_account.cppWindows 不區分大小寫,統一小寫

排版與空白規則

  • 縮進:4 空格 (禁用 Tab);左大括號換行或行尾 (團隊統一),右大括號獨佔行並與對應關鍵字對齊。
  • 控制結構:if/while/for 後無大括號時,下一行縮進 2 空格 (不推薦省略大括號)。
  • 標籤/訪問聲明:public:、case 1: 反向縮進 2 空格 (相對類/函數體)。
  • 運算符前後:二元運算符左右各 1 空格 (如 a + b);一元運算符緊貼操作數 (!flag, ++i)。
  • 指針/引用聲明:T* p / T& r (星號/號貼近類型);表達式中 *p 星號前 1 空格。
  • 括號內:( 後、) 前不加空格;if (cond)。
  • 行長:建議 ≤ 100/120 字符,超過換行縮進 8 空格 (兩級)。

自成檔代碼原則

  1. **零魔數**:除 0/1 外,所有字面值常量提取為 constexpr/enum class,賦予語義名稱。
  2. **完整拼寫**:變量/函數名不縮寫 (如 calculateTotalPrice 而非 calcTotPrc),除非領域通用縮寫 (HTTP, URL, ID, XML)。
  3. **契約式註釋**:函數頭標註 // Pre: ... Post: ... 或 Doxygen @pre @post @param @return。
  4. **斷言文檼化**:assert(ptr != nullptr); 即是最佳註釋。
  5. **TODO/FIXME 標準化**:// TODO(author): description,IDE 可追蹤。

現代 C++ 風格補充 (C++11/14/17/20)

舊式現代替代理由
#define N 100constexpr int N = 100;作用域、類型安全、調試可見
typedef int (*Fn)(int);using Fn = int(int);可讀、支援模板別名
enum { RED, BLUE };enum class Color { Red, Blue };強類型、無隱式轉換、作用域隔離
裸指針擁有權std::unique_ptr/shared_ptrRAII、無洩漏、語義明確
NULL/0nullptr類型安全、避免重載歧義
手寫迴圈範圍 for / 算法 std::transform意圖清晰、少出錯、可並行化

工具落地

  • **格式化**:clang-format (配置 .clang-format 統一團隊風格),CI 強制檢查。
  • **靜態分析**:clang-tidy, Cppcheck, PVS-Studio,編譯期捕獲風格/邏輯問題。
  • **代碼審查清單**:包含命名、排版、魔數、智能指針、const 正確性、異常安全、測試覆蓋。

總結

風格指南非束縛,而是**降低認知負荷、消除歧義、啟用工具鏈自動化**的契約。團隊共識 > 個人偏好;一致性 > 完美性;工具強制 > 人工檢查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved