C++版ディメーターの法則
C++のディメーターの法則(Law of Demeter)としても知られる、最小知識の原則は、モジュール間の疎結合と責務の分離に重点を置くソフトウェア設計原則です。
デメテルの法則では、オブジェクトは他のオブジェクトとの相互作用をできるだけ減らし、直接の友達(つまり、直接やりとりするオブジェクト)とのみ通信する。直接の友達には、オブジェクト自体、オブジェクトが作成したオブジェクト、オブジェクトのコンポーネントオブジェクトが含まれる。通信範囲を直接の友達のみに制限することで、オブジェクト間の結合度を低減し、システムの保守性と拡張性を向上させる。
具体的には、デメテルの法則は、あるオブジェクトは、直接の友人にしか伝達せず、友人の友人にチェーンコールを通じて呼びかけないように要求します。つまり、コードを書く際、あるオブジェクトのメソッド内で別のオブジェクトのメソッドを呼び出すことは極力避け、そういった呼び出しをそのオブジェクトの直接の友人に委譲すべきです。これにより、オブジェクト間の深い結合を回避でき、コードの柔軟性とテストしやすさが向上します。
デメテルの法則に従うことでオブジェクト間の依存関係が減り、コードのモジュール化が向上し、システムの理解、メンテナンス、拡張が容易になります。