首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

程式碼異味圖鑑:Java 開發最常見的 21 種反模式與重構指南

     編輯:Java 程式設計入門

Martin Fowler 在《重構》中定義的「代碼異味」是識別軟體品質劣化的關鍵指標。本文梳理 21 種經典異味,對應重構方向,助你建立代碼質量紅綠燈機制。

結構層面異味

異味核心問題重構方向
1. 重複代碼Copy-Paste 程式設計,違反 OAOO 原則提煉方法、提煮類、Pull Up Method
2. 過長方法單方法承擔多重意圖提煉方法、分解條件表達式
3. 過大類別單一類別承擔過多職責提煉類、提煉超類別
4. 發散式變化類內變化原因多元,修改波及面廣拆分類別,隔離變化維度
5. 霰彈式修改單一變更引發多處連鎖修改搬移方法/欄位,合併相關類別
6. 功能依賴方法頻繁存取他類內部狀態搬移方法至數據所在類
7. 數據泥團多組數據總是成群出現提煉為獨立值物件
8. 基本型別偏執用基本型別表達領域概念(如用 double 表達金額)以值物件封裝領域概念

行為與協議異味

異味核心問題重構方向
9. Switch 語句基於常數分支,違背開閉原則多態、狀態模式、策略模式
10. 平行繼承體系修改一體系必須同步修改另一體系合併體系、移動方法
11. 冗餘類別類別職責過輕,維護成本大於價值內聯類別、Collapse Hierarchy
12. 推測性通用性實現未用功能,唯一調用者是測試YAGNI 原則:刪除
13. 暫時欄位欄位僅在特定場景有效提煉類、引入 Null Object
14. 訊息鏈a.getB().getC().doSomething()隱藏委託、引入中介者
15. 中間人類別過度委託,接口大多轉發移除中間人、直接調用
16. 過度親密類別間過度訪問私有細節搬移方法/欄位、提煮類
17. 介面不一致的替代類同義操作擁有不同簽名重命名方法、提煉超類別

資源與文檔異味

異味核心問題重構方向
18. 不完美庫類別第三方庫缺乏所需功能引入裝飾器、適配器模式
19. 資料類別只有 getter/setter 無行為封裝集合、搬移行為進類別
20. 被拒絕的遺贈子類只用父類極小部分功能以組合取代繼承
21. 過度註釋大量註釋掩蓋代碼不清晰以重構替代註釋:好代碼自文檔化

實踐建議

  • 將異味識別納入 Code Review 標準清單
  • 配合 SonarQube 等靜態分析工具自動化檢測
  • 重構必須有測試保護網,小步快跑、持續集成
  • 記住:重構不是重寫,而是在保持行為不變前提下改善結構
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved