私は非常に巨大な/関与したクラスを持っています(15年以来これをやろうとしたことがないので、リファクタリングするのは非常に困難です。 、プラスの悪いデザイン)、m_Toto
と呼ばれるメンバー変数int
が含まれています。オブジェクトをC
からインスタンス化するときは、多くのことを設定するメンバー関数init()
を渡します。その中では、m_Toto
を0
に設定します。いくつかのデータメンバが設定され、使用された後、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
年代に頼ることなく、だけにして計算され、?それとも、あまりにも過剰なことですか?