我有一个相当庞大/涉及的类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
的?或者它太过矫枉过正?