|
文件結構
|
|
重要性
|
審查項
|
結論
|
|
|
頭文件和定義文件的名稱是否合理?
|
|
|
|
頭文件和定義文件的目錄結構是否合理?
|
|
|
|
版權和版本聲明是否完整?
|
|
|
重要
|
頭文件是否使用了 ifndef/define/endif 預處理塊?
|
|
|
|
頭文件中是否只存放“聲明”而不存放“定義”
|
|
|
|
……
|
|
|
程序的版式
|
|
重要性
|
審查項
|
結論
|
|
|
空行是否得體?
|
|
|
|
代碼行內的空格是否得體?
|
|
|
|
長行拆分是否得體?
|
|
|
|
“{” 和 “}” 是否各佔一行並且對齊同一列?
|
|
|
重要
|
一行代碼是否只做一件事?如只定義一個變量,只寫一條語句。
|
|
|
重要
|
If、for、while、do等語句自佔一行,不論執行語句多少都要加“{}”。
|
|
|
重要
|
在定義變量(或參數)時,是否將修飾符 * 和 & 緊靠變量名?
|
|
|
|
注釋是否清晰並且必要?
|
|
|
重要
|
注釋是否有錯誤或者可能導致誤解?
|
|
|
重要
|
類結構的public, protected, private順序是否在所有的程序中保持一致?
|
|
|
|
……
|
|
|
命名規則
|
|
重要性
|
審查項
|
結論
|
|
重要
|
命名規則是否與所採用的操作系統或開發工具的風格保持一致?
|
|
|
|
標識符是否直觀且可以拼讀?
|
|
|
|
標識符的長度應當符合“min-length &&
max-information”原則?
|
|
|
重要
|
程序中是否出現相同的局部變量和全部變量?
|
|
|
|
類名、函數名、變量和參數、常量的書寫格式是否遵循一定的規則?
|
|
|
|
靜態變量、全局變量、類的成員變量是否加前綴?
|
|
|
|
……
|
|
|
表達式與基本語句
|
|
重要性
|
審查項
|
結論
|
|
重要
|
如果代碼行中的運算符比較多,是否已經用括號清楚地確定表達式的操作順序?
|
|
|
|
是否編寫太復雜或者多用途的復合表達式?
|
|
|
重要
|
是否將復合表達式與“真正的數學表達式”混淆?
|
|
|
重要
|
是否用隱含錯誤的方式寫if語句? 例如
(1)將布爾變量直接與TRUE、FALSE或者1、0進行比較。
(2)將浮點變量用“==”或“!=”與任何數字比較。
(3)將指針變量用“==”或“!=”與NULL比較。
|
|
|
|
如果循環體內存在邏輯判斷,並且循環次數很大,是否已經將邏輯判斷移到循環體的外面?
|
|
|
重要
|
Case語句的結尾是否忘了加break?
|
|
|
重要
|
是否忘記寫switch的default分支?
|
|
|
重要
|
使用goto 語句時是否留下隱患? 例如跳過了某些對象的構造、變量的初始化、重要的計算等。
|
|
|
|
……
|
|
|
常量
|
|
重要性
|
審查項
|
|