代碼審查是保障專案品質、降低技術債的關鍵環節。本文整理涵蓋命名規範、註解標準、聲明與縮排、語句分佈、可靠性檢查、可維護性、可讀性、效能優化、日誌規範、圈複雜度控制及 SQL 編寫優化等 11 大維度的完整檢查清單,供團隊落地執行。
to→2、for→4 外,不建議在命名中混入數字。has/can/is 開頭的方法必須返回 boolean;變數若為布林型,建議移除前綴(如 isValid → valid)。if/else/for/while/case 區塊強制加大括號。++/-- 運算符不參與複雜表達式。final。try 區塊內賦值的物件,調用也必須在 try 內。null 釋放引用。常量 == 變數 或 常量.equals(變數) 防空指針與誤賦值。if-else if 必有終結 else;switch 必有 default。i=0; i<MAX。finally 關閉並判空。==,提供通用比較工具;物件比較統一用 equals 且確保類型一致。DateFormat 等非線程安全物件禁用 static,改用 ThreadLocal。userName 而非混用 username)。try-catch。int 返回值約定:負值失敗、非負成功。new this();同步集合遍歷期間禁增刪元素(拋 ConcurrentModificationException)。run() 迴圈內必捕獲異常防退出;原子操作中斷需回滾外部狀態。static final。a = (b = d + c))。if(b) return true; else return false; → return b;)。public/protected/private static final Type NAME。Serializable 的類必須顯式定義 serialVersionUID。if-else。private static final,避免重複初始化開銷。System.out.println,僅啟動/關閉階段允許,其餘全用日誌框架。SELECT *;WHERE 條件用參數變量而非常數。NOT IN 改 NOT EXISTS;用 JOIN 替代 EXISTS。UNION ALL 優於 UNION(去重開銷大)。IN/OR 可能導致全表掃描,若無大量重複值可拆分並確保含索引列。ORDER BY/GROUP BY;排序列建立索引,非唯一用 UNION ALL。NULL、!=;查詢/排序列順序與索引一致。代碼審查非一次性動作,需持續融入 CI/CD 與團隊文化。建議將核心規則配置為 Checkstyle/SpotBugs/SonarQube 規則集,實現自動化攔截,讓品質可見、可控、可持續。