本章提供另一個讓類別變深的思考角度。

核心問題#

開發新模組時,遇到一段無法避免的複雜性——

是讓模組的使用者處理它,還是讓模組內部自己處理?

若該複雜性與模組所提供的功能相關,通常應由模組內部處理

大多數模組的「使用者」遠多於「開發者」,讓開發者多吃點苦,比讓使用者多吃苦來得划算

換個角度看#

介面簡單實作簡單更重要。

身為模組開發者,目標是讓使用者的生活盡可能輕鬆——即使這意味著你要多做點事。

容易走偏的反方向#

「解決容易的問題、把難的丟給別人」是常見誘惑:

  • 不確定怎麼處理某條件 → 拋出例外讓呼叫端處理
  • 不確定要採用什麼策略 → 塞幾個設定參數讓系統管理員自己想

短期讓你輕鬆,但放大了複雜性

  • 拋例外 → 每個呼叫端都得處理
  • 暴露設定參數 → 每個部署的管理員都得學怎麼設

結語#

開發模組時,主動把一點點額外的痛苦往自己身上攬,以減輕使用者的痛苦。