[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > C/C++ > 正文
高質量C++/C編程指南 -- 附錄A :C++/C代碼審查表
本文出自: 作者: 林銳 博士 (2002-07-29 06:02:00)

附錄A C++/C代碼審查表

文件結構

重要性

審查項

結論

 

頭文件和定義文件的名稱是否合理?

 

 

頭文件和定義文件的目錄結構是否合理?

 

 

版權和版本聲明是否完整?

 

重要

頭文件是否使用了 ifndef/define/endif 預處理塊?

 

 

頭文件中是否只存放“聲明”而不存放“定義”

 

 

……

 

程序的版式

重要性

審查項

結論

 

空行是否得體?

 

 

代碼行內的空格是否得體?

 

 

長行拆分是否得體?

 

 

“{” “}” 是否各佔一行並且對齊同一列?

 

重要

一行代碼是否只做一件事?如只定義一個變量,只寫一條語句。

 

重要

Ifforwhiledo等語句自佔一行,不論執行語句多少都要加“{}”。

 

重要

在定義變量(或參數)時,是否將修飾符 * 緊靠變量名?

 

 

注釋是否清晰並且必要?

 

重要

注釋是否有錯誤或者可能導致誤解?

 

重要

類結構的public, protected, private順序是否在所有的程序中保持一致?

 

 

……

 

命名規則

重要性

審查項

結論

重要

命名規則是否與所採用的操作系統或開發工具的風格保持一致?

 

 

標識符是否直觀且可以拼讀?

 

 

標識符的長度應當符合“min-length && max-information”原則?

 

重要

程序中是否出現相同的局部變量和全部變量?

 

 

類名、函數名、變量和參數、常量的書寫格式是否遵循一定的規則?

 

 

靜態變量、全局變量、類的成員變量是否加前綴?

 

 

……

 

表達式與基本語句

重要性

審查項

結論

重要

如果代碼行中的運算符比較多,是否已經用括號清楚地確定表達式的操作順序?

 

 

是否編寫太復雜或者多用途的復合表達式?

 

重要

是否將復合表達式與“真正的數學表達式”混淆?

 

重要

是否用隱含錯誤的方式寫if語句? 例如

1)將布爾變量直接與TRUEFALSE或者10進行比較。

2)將浮點變量用“==”或“!=”與任何數字比較

3)將指針變量用“==”或“!=”與NULL比較

 

 

如果循環體內存在邏輯判斷,並且循環次數很大,是否已經將邏輯判斷移到循環體的外面?

 

重要

Case語句的結尾是否忘了加break?

 

重要

是否忘記寫switch的default分支?

 

重要

使用goto 語句時是否留下隱患? 例如跳過了某些對象的構造、變量的初始化、重要的計算等。

 

 

……

 

常量

重要性

審查項