条件(三元)运算符代码样式

Kon*_*tin 3 java coding-style conventions ternary-operator conditional-operator

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

Joh*_*erg 6

甲骨文Code Conventions陈述以下

return (condition ? x : y);
Run Code Online (Sandbox Code Playgroud)

.. 并进一步

if (a == b && c == d)     // AVOID!
if ((a == b) && (c == d)) // RIGHT
Run Code Online (Sandbox Code Playgroud)

...被免费翻译成

return (someBoolean ? x : y);
return ((x > y) ? x : y);
Run Code Online (Sandbox Code Playgroud)

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