Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 条件(三元)运算符代码样式_Java_Coding Style_Conventions_Ternary Operator_Conditional Operator - Fatal编程技术网

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);
    
    。。虽然就个人而言,我不介意用一两个括号。
    最后,这仍然是一个主观问题。如果您觉得添加/删除括号可以提供更好的可读性,那么无论如何都可以这样做

    谢谢你的帮助和回答问题。你所回答的问题已经结束了,因为这是一种导致长时间辩论的事情,而不是解决某人的问题。我想建议,在未来,避免这些关于观点或存在争议的问题是值得的,因为它们可能会被关闭或删除(因此,你回答这些问题所赢得的任何声誉也会随之消失)。