6. 最小知識原則 (Principle of Least Knowledge:PLK) aka デルメルの法則 (the Low of Demeter)
クラスCの操作Oは、以下のオブジェクトの操作だけを呼び出すべきである。
それはクラスC、操作Oの引数、操作Oが生成したオブジェクト、クラスCのインスタンスオブジェクトである。
オブジェクトのはしご(別のオブジェクトのメソッド呼び出しで得られたオブジェクトのメソッドを呼び出す)はNG。
途中のオブジェクトに、最終目的のオブジェクトまでリクエストを転送しなさい。
ではなく、
class Foo {
hoge(Bar bar) {
Baz baz = bar.getBaz();
baz.fuga();
}
}
というふうにするべき。
class Foo {
hoge(Bar bar) {
bar.hige();
//Bar#hige() の中で Baz.fuga()を呼び出す
}
}
こうすると、Barの内部構造にFooが依存しなくなる。