「把複雜性往下拉」是個容易做過頭的點子。

極端版本就是「把整個應用的所有功能下拉到單一類別」——顯然不合理。

適合下拉的條件#

把複雜性下拉只在以下條件成立時最合理:

  1. 被下拉的複雜性與類別現有功能密切相關
  2. 下拉之後能在應用程式他處帶來大量簡化
  3. 下拉之後能讓類別介面變更簡單

別忘了目標:最小化系統整體的複雜性

反例:把 UI 邏輯下拉到文字類別#

第 6 章提到,有些學生在文字類別中定義了反映 UI 操作的方法(例如 backspace 鍵的功能)。

乍看像是「把複雜性下拉」,但問題是:

  • UI 知識被加進文字類別 → 沒有顯著簡化上層程式碼
  • UI 知識與文字類別的核心功能無關
  • 結果不是下拉複雜性,而是資訊洩漏

判斷的關鍵#

複雜性下拉的對象,必須與目標類別的核心職責相關;否則它只是把「不屬於這裡的東西」塞進來,反而製造耦合。