Tell, Don't Askとは?オブジェクト指向設計における重要原則を徹底解説
オブジェクト指向設計では、データと振る舞いを一緒に管理することが重要です。オブジェクトは単なるデータの入れ物ではなく、自分の状態を持ち、その状態に基づいて適切な処理を実行する存在として設計されます。しかし実務では、オブジェクトから値を取得し、その値を外部のクラスや関数で判定して処理する実装が多く見られます。このような設計では、ロジックがオブジェクトの外側に散らばり、保守性が低下しやすくなります。
Tell, Don't Askは、このような設計上の問題を改善するための原則です。直訳すると「尋ねるのではなく、命じる」という意味であり、オブジェクトの内部状態を外部から取得して判断するのではなく、オブジェクト自身に処理を依頼するべきだという考え方を示します。これはカプセル化、責務分離、保守性向上と深く関係する重要な設計原則です。
本記事では、Tell, Don't Askの基本概念、TellとAskの違い、なぜこの原則が必要なのか、オブジェクト指向設計との関係、Ask中心設計が抱える問題、Tell中心設計がもたらす効果、Feature EnvyやAnemic Domain Modelとの関係、Law of DemeterやSOLID原則とのつながりまで体系的に解説します。
EN
JP
KR