Java 編程三十條鐵律
這三十條規範涵蓋命名、類設計、方法編寫、異常處理、性能優化、團隊協作等核心領域,是 Java 開發者進階必讀。
命名與基礎規範 (1-3)
- 命名規約:類名首字母大寫 (PascalCase),方法/變量/對象首字母小寫 (camelCase),常量全大寫下劃線分隔,包名全小寫。
- 經典類模板:通用類應實現
equals()、hashCode()、toString()、clone() (實現 Cloneable)、Serializable 接口。
- 保留測試入口:每個類包含
main() 測試代碼,方便回歸驗證與示例演示。
方法與類設計 (4-8)
- 單一職責方法:方法短小精悍,只做一件事;過長則拆分,促進復用。
- 以客戶為中心設計:API 使用直觀,預留擴展點,便於維護者修改。
- 類職責單一:解決一個特定問題;複雜 switch 改用多態,操作差異大拆分類,成員特徵差異大拆分類。
- 最小化可見性:默認
private,僅暴露必需公共接口;多線程下 private 保護字段安全。
- 拒絕巨大對象:對象表達業務概念而非整個應用;避免將過程式代碼塞入一兩個大類。
代碼組織與技巧 (9-14)
- 隔離醜陋代碼:不得已的 Hack 封裝在類內部,不污染公共接口。
- 善用內部類:類間耦合極高時,內部類改善封裝與維護。
- 詳盡 Javadoc:使用標準標籤生成專業文檔。
- 消除魔術數字:用語義化常量替代字面值,提升可讀性與可維護性。
- 構造器異常處理:創建失敗時重新拋出異常,防止調用者誤以為對象有效。
資源管理與清理 (15-16)
- 確定性清理模式:需顯式釋放資源的對象,用
try-finally 確保清理代碼執行。
- 正確覆寫 finalize:調用
super.finalize() 放在最後,確保父類組件仍可用。
集合與繼承策略 (17-22)
- 固定集合用數組:編譯期類型檢查,調用者無需強轉。
- 優先接口抽象:基類首選
interface,只有需共享實現/字段才用 abstract class。
- 構造器最小化:僅初始化狀態,避免調用可覆寫方法(可能導致不可預期行為)。
- 對象擁有行為:不只是數據容器,封裝相關業務邏輯。
- 組合優於繼承:除非確滿足 is-a 關系,優先用組合/委派復用代碼。
- 繼承表達行為差異,字段表達狀態差異:如顏色用字段,不創建 Red/Blue 子類。
工程實踐與思維 (23-30)
- 類路徑唯一性:確保 classpath 中同名類唯一,避免編譯器誤載入。
- 事件適配器拼寫陷阱:覆寫適配器方法時拼寫錯誤不會報錯,導致方法無效;final 類可放心用
instanceof 優化。
- 消除偽單例:需單例時用單例模式封裝,而非靠約定限制。
- 警惕分析癱瘓:先掌握全局再鑽細節,避免陷入死邏輯。
- 拒絕過早優化:先跑通再優化,有證據的瓶頸才動刀;優化代價是可讀性下降。
- 代碼讀多寫少:投資清晰設計、註釋、示例,造福自己與他人。
- 引入外部審視:邀請非專家用新視角發現盲區,低成本規避風險。
- 良好設計回報最高:前期投入尋找正確抽象,後期事半功倍;抵制草率完工誘惑。