「把複雜性往下拉」是個容易做過頭的點子。
極端版本就是「把整個應用的所有功能下拉到單一類別」——顯然不合理。
適合下拉的條件#
把複雜性下拉只在以下條件成立時最合理:
- 被下拉的複雜性與類別現有功能密切相關
- 下拉之後能在應用程式他處帶來大量簡化
- 下拉之後能讓類別介面變更簡單
別忘了目標:最小化系統整體的複雜性。
反例:把 UI 邏輯下拉到文字類別#
第 6 章提到,有些學生在文字類別中定義了反映 UI 操作的方法(例如 backspace 鍵的功能)。
乍看像是「把複雜性下拉」,但問題是:
- UI 知識被加進文字類別 → 沒有顯著簡化上層程式碼
- UI 知識與文字類別的核心功能無關
- 結果不是下拉複雜性,而是資訊洩漏
判斷的關鍵#
複雜性下拉的對象,必須與目標類別的核心職責相關;否則它只是把「不屬於這裡的東西」塞進來,反而製造耦合。