So I have something like
bSuccess = true;
bSuccess = bSuccess && statement1();
bSuccess = bSuccess && statement2();
bSuccess = bSuccess && statement3();
...
Is there a better or more idiomatic way to write this?
So I have something like
bSuccess = true;
bSuccess = bSuccess && statement1();
bSuccess = bSuccess && statement2();
bSuccess = bSuccess && statement3();
...
Is there a better or more idiomatic way to write this?
您可以将它们链接在一起:
bSuccess = statement1() && statement2() && statement3();
这是“惯用的”,但是这种类型的代码是否清晰尚不完全清楚。您依赖于每个函数调用的副作用,因此至少这些应该有据可查。
假设如果成功,所有 3 个语句都返回 true,我将使用:
statement1() && statement2() && statement3();
这取决于您的陈述有多复杂。那些足够简单的,你可以这样做:
bSuccess = statement1() && statement2() && statement3();
但是,对于更复杂的东西,我倾向于执行以下操作:
fOk = 1; // true
if (fOk) {
LotsOfStuffNotSettingError();
fOk = SomethingSettingError();
}
if (fOk) {
LotsMoreStuffNotSettingError();
fOk = (ThisNeedsToReturnOne() == 1);
}
等等。
这样,块可以任意复杂,不限于能够用二元逻辑运算符处理的简单语句。
每个块中可能有很多东西根本没有设置fOk
,但每个块基本上应该以一个语句设置结束fOk
。