2016-04-28 13 views
0

私は非常に巨大な/関与したクラスを持っています(15年以来これをやろうとしたことがないので、リファクタリングするのは非常に困難です。 、プラスの悪いデザイン)、m_Totoと呼ばれるメンバー変数intが含まれています。オブジェクトをCからインスタンス化するときは、多くのことを設定するメンバー関数init()を渡します。その中では、m_Toto0に設定します。いくつかのデータメンバが設定され、使用された後、onはm_Totoが持つ値を計算できます。この値は、クラスが果たす他のすべての中心になります。悪い命名はさておき設定さて、m_Totoは、このような構造を持っているint C::GetToto()の呼び出しを介して、最初に計算されメンバ変数が設定された/更新されたことを更新しました

int C::GetToto() 
{ 
    if (m_Toto != 0) 
     return m_Toto ; 
    // else 
    // we calculate m_Toto thx to a lot of data etc 
} 

我々はm_Totoの値を必要とするたびに、私たちはGetToto()を呼び出し、誰がm_Totoが初期化されていることを確認し(、すなわちはゼロではない)、最初の「実際の」計算が返されます。

私の問題は次のとおりです。私はboolメンバ変数m_IsBlahで定義され、m_Totoの値に決定されるべきであるCの状態を持っています。私はm_IsBlahは初回のみm_Totoに計算されることを確認するために、エレガントな方法では、確かに何ができる方法

は、上記の種類の醜いif年代に頼ることなく、だけにして計算され、?それとも、あまりにも過剰なことですか?

答えて

0

いつもC++では、抽象をキャプチャするのに、classを使用してください。 IsBlahが設定されている場合は、そのクラスをコンストラクタおよびレポートで作成されたCのメンバーとしてメンバーにしてください。

関連する問題