この例は C++ で書きましたが、このコード リファクタリングの質問は、Java など、OO を支持するすべての言語にも当てはまります。
基本的に私はクラスAを持っています
class A
{
public:
void f1();
void f2();
//..
private:
m_a;
};
void A::f1()
{
assert(m_a);
m_a->h1()->h2()->GetData();
//..
}
void A::f2()
{
assert(m_a);
m_a->h1()->h2()->GetData();
//..
}
m_f
ポインターを保持する新しいプライベート データ メンバーを作成しますm_a->h1()->h2()
か? 私が見ることができる利点は、コードを大幅に簡素化するマルチレベル関数呼び出しを効果的に排除することです。
しかし、別の観点から見ると、別の既存のデータメンバーから推測できる「不要な」データメンバーが作成されますがm_a
、これはちょっと冗長ですか?
ここでジレンマに陥ります。断然、どちらか一方を使用するように自分に納得させることはできません。
皆さんはどちらが好きですか、理由はありますか?