次のようなものがあるとします (残念ながら、元のコードを投稿することは許可されていません)。
public void foo() {
MyObject obj = getMyObject();
bar(obj);
}
public void bar(MyObject obj) {
Type type = new Type(obj.getOtherObject());
}
foo
を呼び出しbar
、 を渡しobj
ます。ただし、を使用する代わりにobj
、ゲッターを呼び出して必要な情報を取得します。これはデメテルの法則に違反していますか?
以下のように書いた方が良いでしょうか?
public void foo() {
MyObject obj = getMyObject();
bar(obj.getOtherObject());
}
public void bar(MyOtherObject otherObj) {
Type type = new Type(otherObj);
}