良好的編程風格是專業工程師的基本素養。本文匯總源自軟體工程實戰的編程規範,涵蓋基本排版、可讀性、結構化、正確性容錯、可重用性五大維度,共 50+ 條具體規則。
{ } 獨佔一行,與所屬結構首字母對齊。| 編號 | 規則 | 關鍵指標 |
|---|---|---|
| 2.1 | 可讀性第一,效率第二 | — |
| 2.2 | 註釋與代碼完全同步更新 | — |
| 2.3 | 每檔案有檔案頭:功能、作者、版本、日期、修改記錄 | 模板化 |
| 2.4 | 每函數有函數頭:用途、參數、返回值、副作用、異常 | 模板化 |
| 2.5 | 主要變量定義處註釋語義 | — |
| 2.7 | 常量定義有說明 | — |
| 2.8 | 每處理階段有註釋 | — |
| 2.9 | 典型算法前有註釋 | — |
| 2.10 | 縮進量一致,以 Tab 為單位,Tab=4/8 空格 | 配置 .editorconfig |
| 2.11 | 迴圈/分支嵌套 ≤ 5 層 | 超過即重構 |
| 2.12 | 註釋可同行或上行 | — |
| 2.13 | 空行/空白也是特殊註釋(邏輯分組) | — |
| 2.14 | 一目了然語句免註釋 | — |
| 2.15 | 註釋作用域:定義/引用/分支/代碼塊 | — |
| 2.16 | 註釋行數佔總行數 1/5 ~ 1/3 (含檔案/函數頭) | 統計工具檢查 |
goto。if(a) ... else ... 兩支路完全對稱)。if 強調二選一,禁 else goto、else return。switch / case。break/return)。return),便於清理資源。a = b ? c : d 複雜時拆開)。if (cond) return true; else return false; → return cond;)。if (a && b) 優於巢狀 if)。| 規則 | 說明 |
|---|---|
| 程式首先正確,其次優美 | — |
| 寫完先自查,再提交 | — |
| 改 Bug 評估影響面,防止連鎖 Bug | — |
| 所有變量使用前必須初始化 | 零值/預設值/哨兵值 |
| 所有用戶輸入必經合法性檢查 | 長度、範圍、格式、編碼 |
| 禁用浮點數直接比較相等 | fabs(a-b) < EPS |
| 環境依賴主動處理異常 | 檔案鎖、印表機在線、網路可達 |
| 單元測試是編程一部分,未通過不得聯調 | 覆蓋率門檻 |
.editorconfig、.clang-format、cpplint.cfg。clang-tidy、cppcheck、cpplint 自動掃描。規範不是束縛,而是團隊協作的共同語言。從「能跑」到「好維護」、從「我懂」到「新人也能懂」,這 50+ 條規則是踏上專業工程師之路的最小必要集合。