所以我有类似
的东西bSuccess = true;
bSuccess = bSuccess && statement1();
bSuccess = bSuccess && statement2();
bSuccess = bSuccess && statement3();
...
有没有更好或更惯用的方式来写这个?
答案 0 :(得分:4)
你可以把它们连在一起:
bSuccess = statement1() && statement2() && statement3();
这是“惯用的”,但是这种类型的代码是否清晰尚不完全清楚。你依赖于每个函数调用的副作用,所以至少应该记录下来。
答案 1 :(得分:1)
假设成功时所有3个语句都返回true,我会使用:
statement1() && statement2() && statement3();
答案 2 :(得分:0)
这取决于你的陈述有多复杂。如此简单,您可以这样做:
bSuccess = statement1() && statement2() && statement3();
然而,对于更复杂的东西,我倾向于做以下事情:
fOk = 1; // true
if (fOk) {
LotsOfStuffNotSettingError();
fOk = SomethingSettingError();
}
if (fOk) {
LotsMoreStuffNotSettingError();
fOk = (ThisNeedsToReturnOne() == 1);
}
等等。
这样,块可以任意复杂,不限于能够用二进制逻辑运算符处理的简单语句。
每个块中可能有很多内容根本没有设置fOk
,但每个块基本上应以一个语句设置fOk
结束。