我有一個相當龐大/涉及的類C
(很難重構,因爲從15年以來從未有人試圖這樣做,所以事情已經堆積到了ra子上,加上糟糕的設計),其中包含int
成員變量,稱爲讓我們說m_Toto
。每當你從C
實例化一個對象時,你都會通過一個init()
成員函數來設置很多東西,其中它將m_Toto
設置爲0
。有些數據成員設置使用後,就可以計算出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
是否已初始化(即非零),並返回,「真實」計算僅在第一次完成。
我的問題是以下。我有一個C
的狀態,該狀態由bool
成員變量m_IsBlah
定義,並應由thx確定爲m_Toto
的值。
我怎麼能這樣做,以確保在一個優雅的方式,以確保m_IsBlah
將只計算首次m_Toto
計算,也只有這樣,而不是訴諸上述那種醜陋if
的?或者它太過矯枉過正?