註釋
- 不恰當的註釋
- 廢棄的註釋
- 冗餘的註釋
- 糟糕的註釋
- 註釋掉的代碼
環境
- 需要多步才能實現的構建
- 需要多步才能做到的測試
函數
- 過多的參數
- 輸出參數
- 標識參數
- 死函數
一般性問題
- 一個源文件中存在多種語言
- 明顯的行爲未被實現(違反 最小驚異原則 The Principle of Least Surprise)
- 不正確的邊界行爲
- 忽視安全
- 重複
- 在錯誤的抽象層級上的代碼
- 基類依賴於派生類
- 信息過多
- 死代碼
- 前後不一致
- 無意義代碼
- 人爲耦合
- 特性依戀
- 選擇算子參數
- 晦澀的意圖
- 位置錯誤的權責
- 不恰當的靜態方法
- 函數名稱沒有表達行爲
- 需要額外理解的算法
- 邏輯依賴
- 不遵循團隊標準約定
- 魔法數字
- 否定性條件
- 函數做多件事
- 濫用if/else和switch
- 時序耦合
- 隨意
- 未封裝的邊界條件
- 函數不在一個抽象層級上
- 沒有在較高層放置可配置數據
- 傳遞瀏覽
Java
- 繼承常量
- 沒有正確使用枚舉代替常量
名稱
- 非描述性名稱
- 名稱與抽象層級不符
- 不標準的命名方法
- 歧義的名稱
- 編碼
- 名稱沒有說明副作用
測試
- 測試不足
- 沒有全面測試相近的缺陷
- 測試速度慢