デメテルの法則とは?
オブジェクト指向のメソッド呼び出しに秩序をもたらすガイドラインです。
メソッドを呼び出すオブジェクトは次の4つに限定されます。
オブジェクト自身
引数として渡されたオブジェクト
インスタンス変数
直接インスタンス 化したオブジェクト
例えば
「親クラス.子クラス.子クラスのメソッド」みたいな形でメソッドを呼び出すのはNGということですね。
守らないことによるデメリット
密結合になる。
例えば、子クラスでメソッドやプロパティを削除したときに親クラスまで参照して直さないといけなくなってしまう。
テストがしづらくなる。
対策
Railsでは
delegateを使ってメンバーを呼び出すという方法もあるみたいです。(厳密には対策になってないかもしれない)
この記事へのコメントはありません。