私のアプリケーションには、このようなコードがいくつかあります。それはいくつかの XML を書き出します:-
public void doStuff( Business b, XMLElement x)
{
Foo f = b.getFoo();
// Code doing stuff with f
// b is not mentioned again.
}
私が理解しているように、ディメンターの法則はこれが悪いと言っているでしょう. 「Code Complete」は、これがカップリングを増やしていると言います。このメソッドは、最初に "f" を取る必要があります。
public void doStuff( Foo f, XMLElement x)
{
// Code doing stuff with f
}
しかし、今はこのコードを変更する必要があり、実際には の別のメソッドにアクセスする必要がありますb
。
public void doStuff( Business b, XMLElement x)
{
Foo f = b.getFoo();
// Code doing stuff with f
// A different method is called on b.
}
このインターフェイスは、変更が完全にメソッド内にあるため、作業が楽になります。アプリケーションの周りから呼び出される多くの場所について心配する必要はありません。
これは、元の設計が正しかったことを示唆しています。同意しますか?私は何が欠けていますか?
PS。このシステムでは、ドメイン オブジェクトは XML としての外部表現を認識していないため、動作が b 自体に属しているとは思いません。