# 程式碼壞味道

最常見的設計問題出自以下情況:

  • 重複的程式碼
  • 不清晰的程式碼
  • 複雜的程式碼

# 所有類型

  • 重複的程式碼
  • 過長的函式
    • 可透過 Extract Method [F] 簡單的解決
  • 複雜的條件句
  • 基本型別偏執(Primitive Obsession)
    • Primitive: int, string, double, ...
    • 只使用基本型別,完全不想用 class
  • 不當暴露
    • 不該被客戶看見的 function 或 class
  • 解法蔓生(Solution Sprawl)
    • 當用來執行任務的程式碼和(或)資料蔓生於許多 class 內時,解法蔓生就此發生。這個壞味道的產生常常是由於快速為系統增加功能而沒有花費足夠時間簡化和強化設計以便妥善接納新功能。
  • 貌異實同的類別
  • 多餘的類別
  • 過大的類別
  • Switch 驚悚
    • switch 本身並非不好
    • 但它可能讓你的程式碼更複雜更缺乏彈性
  • 組合暴增
    • 當你在程式碼許多地方以不同種類或不同數量的資料或物件做相同的事情
  • 詭譎解法(Oddball Solution)
    • 當同一種問題以不同方法解決時,解法即是詭譎或不一致