Java 条件(三元)运算符代码样式
Java 条件(三元)运算符代码样式,java,coding-style,conventions,ternary-operator,conditional-operator,Java,Coding Style,Conventions,Ternary Operator,Conditional Operator,intfoo=bar>baz?酒吧:baz ; int foo=someBoolean?酒吧:baz ; intfoo=(bar>baz)?酒吧:baz ; intfoo=(someBoolean)?酒吧:baz ; intfoo=(bar>baz)?酒吧:baz ; int foo=someBoolean?酒吧:baz ; 我不能决定这三个我应该用哪一个。我可以: 在以下示例中,不要使用括号,否则可能导致可读性差: min[0]=min[0]>pos.x?位置x:0 始终使用括号,但要注意
intfoo=bar>baz?酒吧:baz ;代码>
int foo=someBoolean?酒吧:baz ;代码>
intfoo=(bar>baz)?酒吧:baz ;代码>
intfoo=(someBoolean)?酒吧:baz ;代码>
intfoo=(bar>baz)?酒吧:baz ;代码>
int foo=someBoolean?酒吧:baz ;代码>
我不能决定这三个我应该用哪一个。我可以:
在以下示例中,不要使用括号,否则可能导致可读性差:
min[0]=min[0]>pos.x?位置x:0代码>
始终使用括号,但要注意风险
短表达式中有点难看的代码:
setValue(val+scrollBar.getBlockIncrement()*((scrollsUp)?-1:1))代码>
在中间的某个地方,如果有空格,则使用括号
在条件中,但如果条件只是一个布尔值,则不是
变量:
min[0]=(min[0]>pos.x)?位置x:0代码>
setValue(val+scrollBar.getBlockIncrement()*(scrollsUp?-1:1))代码>
我个人更喜欢案例2:
int foo = (bar > baz) ? bar : baz;
int foo = (someBoolean) ? bar : baz;
因为条件在括号内
这段代码
int foo = bar > baz ? bar : baz;
会影响可读性,但会完美编译。但是,我认为将测试条件放在括号中会更好地提高可读性。
然而,我想说,这主要取决于人们的编码风格。尽管如此,所有这三种情况都可以很好地工作:)在我的情况下,任何事情都有清晰的规则,所以我选择:
int foo = (bar > baz) ? bar : baz;
int foo = (someBoolean) ? bar : baz;
神谕陈述如下
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);
。。虽然就个人而言,我不介意用一两个括号。
最后,这仍然是一个主观问题。如果您觉得添加/删除括号可以提供更好的可读性,那么无论如何都可以这样做 谢谢你的帮助和回答问题。你所回答的问题已经结束了,因为这是一种导致长时间辩论的事情,而不是解决某人的问题。我想建议,在未来,避免这些关于观点或存在争议的问题是值得的,因为它们可能会被关闭或删除(因此,你回答这些问题所赢得的任何声誉也会随之消失)。