3

int foo = bar > baz ? bar : baz;

int foo = someBoolean ? bar : baz;


int foo = (bar > baz) ? bar : baz;

int foo = (someBoolean) ? bar : baz;


int foo = (bar > baz) ? bar : baz;

int foo = someBoolean ? bar : baz;

この3つのうち、どれを使えばいいのかわかりません。できます:

  1. 次のような例では、括弧を使用しないと読みにくくなる危険があります。

    min[0] = min[0] > pos.x ? pos.x : 0;

  2. 常に括弧を使用しますが、短い式ではやや醜いコードになるリスクがあります。

    setValue(val + scrollBar.getBlockIncrement() * ((scrollsUp) ? -1 : 1));

  3. 条件にスペースがある場合はその中間にとどまり、括弧を使用しますが、条件が単なるブール変数である場合は使用しません。

    min[0] = (min[0] > pos.x) ? pos.x : 0;

    setValue(val + scrollBar.getBlockIncrement() * (scrollsUp ? -1 : 1));

4

3 に答える 3

7

オラクルCode Conventionsは次のように述べています

return (condition ? x : y);

.. そしてさらに

if (a == b && c == d)     // AVOID!
if ((a == b) && (c == d)) // RIGHT

...これは自由に翻訳されます

return (someBoolean ? x : y);
return ((x > y) ? x : y);

.. 個人的な注意としては、括弧を 1 つか 2 つ緩めてもかまいません。結局、それはまだ主観的な問題です。括弧を追加/削除すると可読性が向上すると思われる場合は、遠慮なくそうしてください。

于 2012-09-27T23:36:14.160 に答える
2

私の場合、明快さがすべてを支配するので、次のようにします。

int foo = (bar > baz) ? bar : baz;
int foo = (someBoolean) ? bar : baz;
于 2012-09-27T23:28:27.723 に答える
0

私は個人的にケース2を好みます:

     int foo = (bar > baz) ? bar : baz;

    int foo = (someBoolean) ? bar : baz;

条件が括弧内にあるためです。

このコード片

 int foo = bar > baz ? bar : baz;

可読性に影響しますが、完全にコンパイルされます。ただし、括弧内にテスト条件を入れると、読みやすくなると思います。ただし、それは主に人のコーディングスタイルに依存すると思います。それにもかかわらず、threecase はすべて正常に動作します :)

于 2012-09-27T23:25:27.383 に答える