0

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?

4

3 回答 3

4

您可以将它们链接在一起:

bSuccess = statement1() && statement2() && statement3();

这是“惯用的”,但是这种类型的代码是否清晰尚不完全清楚。您依赖于每个函数调用的副作用,因此至少这些应该有据可查。

于 2012-08-20T05:39:24.717 回答
1

假设如果成功,所有 3 个语句都返回 true,我将使用:

statement1() && statement2() && statement3();
于 2012-08-20T05:40:26.560 回答
0

这取决于您的陈述有多复杂。那些足够简单的,你可以这样做:

bSuccess = statement1() && statement2() && statement3();

但是,对于更复杂的东西,我倾向于执行以下操作:

fOk = 1; // true

if (fOk) {
    LotsOfStuffNotSettingError();
    fOk = SomethingSettingError();
}

if (fOk) {
    LotsMoreStuffNotSettingError();
    fOk = (ThisNeedsToReturnOne() == 1);
}

等等。

这样,块可以任意复杂,不限于能够用二元逻辑运算符处理的简单语句。

每个块中可能有很多东西根本没有设置fOk,但每个块基本上应该以一个语句设置结束fOk

于 2012-08-20T05:41:09.973 回答