0

だから私は次のようなものを持っています

bSuccess = true;

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

これを書くためのより良いまたはより慣用的な方法はありますか?

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が、各ブロックは基本的に1つのステートメント設定で終了する必要がありますfOk

于 2012-08-20T05:41:09.973 に答える