在以下(转述的)代码中,我正在检查各种条件,更新它们,并安排单个通知,无论条件更改的数量有多少。如果条件没有改变,则不应发出任何通知。此外,还有一种特殊条件,如果发生变化,不会触发通知。
public bool Update() {
bool shouldNotify = false;
if (SpecialConditionChanged())
UpdateSpecialCondition();
if (Condition1Changed()) {
UpdateCondition1();
shouldNotify = true;
}
if (Condition2Changed()) {
UpdateCondition2();
shouldNotify = true;
}
...
return shouldNotify;
}
这段代码可以工作,但是非常冗长且重复,每次都必须设置标志。我想问是否有更优雅或更有效的解决方案。如果零个条件或仅特殊条件发生变化,则返回 false,但如果任何剩余条件发生变化,则返回 true。
我考虑过使用
bool[]
(同样冗长);我考虑过使用计数器(同样重复);我考虑过添加一个额外的 if or
是所有条件一起更改布尔值一次(有很多条件),但我想到的没有比这个版本更干净的了。
我是否缺少一些可以让这个看起来或工作得更好的东西?
只需更改为
bool shouldNotify = true;
if (SpecialConditionChanged())
{
UpdateSpecialCondition();
shuoldNotify = false;
}