Ich habe eine ziemlich große/beteiligte Klasse C
(ziemlich schwierig zu refactor, wie niemand seit 15 Jahren jemals versucht hat, so dass die Dinge bis zu den Sparren angehäuft haben (plus schlechtes Design), das eine int
Mitgliedsvariable enthält, sagen wir mal m_Toto
. Wann immer Sie ein Objekt von C
instanziieren, passieren Sie eine init()
Mitgliedsfunktion, die eine Menge Dinge setzt, darunter setzt sie m_Toto
auf 0
. Nachdem einige Datenelemente festgelegt und verwendet wurden, kann on den Wert berechnen, den m_Toto
haben wird. Dieser Wert wird für alles andere, was die Klasse tut, von zentraler Bedeutung sein.Aktualisiert, dass eine Membervariable gesetzt wurde/hat sich geändert
Nun setzt schlechte Namensgebung beiseite, m_Toto
wird zum ersten Mal durch den Aufruf der int C::GetToto()
, berechnet, die diese Struktur hat:
int C::GetToto()
{
if (m_Toto != 0)
return m_Toto ;
// else
// we calculate m_Toto thx to a lot of data etc
}
Immer, wenn wir m_Toto
‚s-Wert müssen wir GetToto()
nennen, die überprüft, dass m_Toto
initialisiert ist (dh ist nicht Null) und gibt zurück, die "echte" Berechnung wird nur beim ersten Mal durchgeführt.
Mein Problem ist das folgende. Ich habe einen Zustand von , der durch eine bool
Mitgliedsvariable m_IsBlah
definiert ist, und thx zu dem Wert von m_Toto
bestimmt werden sollte.
Wie könnte ich tun, um sicher zu sein, in einer eleganten Art und Weise, um sicherzustellen, dass m_IsBlah
wird nur das erste Mal berechnet werden m_Toto
berechnet wird, und nur dann, ohne die oben genannte Art zu hässlich if
‚s zurückgreifen? Oder ist es zu viel Overkill?