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;

我无法决定我应该使用这三个中的哪一个。我可以:

  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);

..虽然就个人而言,我不介意放一两个括号。归根结底,这仍然是一个主观问题。如果您觉得添加/删除括号提供了更好的可读性,那么请随意这样做。

于 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;

会影响可读性,但会完美编译。但是我认为将测试条件放在括号中会更好的可读性。但是我想说这主要取决于人们的编码风格。尽管如此,所有三个案例都可以正常工作:)

于 2012-09-27T23:25:27.383 回答