本章提供另一個讓類別變深的思考角度。
核心問題#
開發新模組時,遇到一段無法避免的複雜性——
是讓模組的使用者處理它,還是讓模組內部自己處理?
若該複雜性與模組所提供的功能相關,通常應由模組內部處理。
大多數模組的「使用者」遠多於「開發者」,讓開發者多吃點苦,比讓使用者多吃苦來得划算。
換個角度看#
介面簡單比實作簡單更重要。
身為模組開發者,目標是讓使用者的生活盡可能輕鬆——即使這意味著你要多做點事。
容易走偏的反方向#
「解決容易的問題、把難的丟給別人」是常見誘惑:
- 不確定怎麼處理某條件 → 拋出例外讓呼叫端處理
- 不確定要採用什麼策略 → 塞幾個設定參數讓系統管理員自己想
短期讓你輕鬆,但放大了複雜性:
- 拋例外 → 每個呼叫端都得處理
- 暴露設定參數 → 每個部署的管理員都得學怎麼設
結語#
開發模組時,主動把一點點額外的痛苦往自己身上攬,以減輕使用者的痛苦。