Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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
是否应该使用多个if语句,如;如果(条件)如果(条件).“;在Java中可以避免吗?_Java_Coding Style_Conventions_Readability - Fatal编程技术网

是否应该使用多个if语句,如;如果(条件)如果(条件).“;在Java中可以避免吗?

是否应该使用多个if语句,如;如果(条件)如果(条件).“;在Java中可以避免吗?,java,coding-style,conventions,readability,Java,Coding Style,Conventions,Readability,我的IDE(IntelliJ IDEA)告诉我,我可以选择删除此if语句中的大括号: if (objectIsOfTypeFoo) { if (objectOfTypeFooIsShared) { // do something with Object of type Foo knowing that it's shared... } else { // do something with Object of type Foo knowing th

我的IDE(IntelliJ IDEA)告诉我,我可以选择删除此if语句中的大括号:

if (objectIsOfTypeFoo) {
    if (objectOfTypeFooIsShared) {
        // do something with Object of type Foo knowing that it's shared...
    } else {
        // do something with Object of type Foo knowing that it's not shared...
    }
} else if (objectIsOfTypeBar) {
    ...
}
成为:

if (objectIsOfTypeFoo) if (objectOfTypeFooIsShared) {
    // do something with Object of type Foo knowing that it's shared...
} else {
    // do something with Object of type Foo knowing that it's not shared...
} else if (objectIsOfTypeBar) {
    ...
}
我理解这是有道理的,而且很容易失去缩进,但我担心的是可读性可能会受到影响。后者看起来更干净,但节省的空间值得潜在的混乱吗

我假设两者之间的性能差异很小(如果有的话)


作为一个后续问题:一行中可以容纳多少个“如果(条件)”,有没有限制,或者更确切地说,在什么时候会变得太多?

我更喜欢第一个。我认为在一行上有多个ifs的位是不可读的


对不起,我要投票决定结束。这将是一场没有答案的辩论。

我投票支持你已经拥有的方式

我甚至不用这个:

if(foo)
   return bar;
我喜欢这样:

if(foo){
   return bar;
}

“程序必须是为人们阅读而编写的,而且只是为机器执行而编写的”

始终使用大括号。有一天,你会想在if或else块中添加第二个语句,然后你会希望自己有。然而,您真的在进行
实例检查吗?你能重新编写你的程序,把它们变成多态对象行为吗?

建议总是使用大括号,但是有没有一种情况是没有人使用大括号,最好不要使用大括号,因为这样更容易阅读

if(condition){

} else if (condition) {
    ...
}else if (condition3){

}
如果你总是用大括号,情况会是这样。也许我在某个地方弄错了

if(condition){

 } else{ 

       if (condition) {
             ...
       }else {

           if (condition3){

           }//end if
       }//end else
 }//end else

因此,我认为使用始终取决于可读性,就像上面所说的,程序必须为人们阅读而编写,只是顺便说一句,为机器执行而编写。

第一个示例更具可读性,并且不太可能由于缺少大括号而导致问题-imhot运行时的性能差异为零,因为两个版本的代码gen是相同的。编译时的性能差异是分析两个额外大括号的成本。所以零。哦,忽略IDE:它提供了(在我看来)可怕的建议。我从未见过IntelliJ推荐这样的东西。我会检查你的风格设置。+1-是的,但风格和完美的报价。就个人而言,我建议你接受这个。我不同意,我认为当一个if很容易,比如if(foo)抛出异常时,也不错。很酷,谢谢!关上它!在这一点上似乎已经有了共识:)通常当有人编写这样复杂的代码时,进一步思考可以简化它。即使拥有不同版本的
Foo
并不容易,也许
Foo
可以拥有一个对象,该对象了解共享策略或具有不同的共享策略子类。还记得帕斯卡的信吗:“很抱歉,我的信太长了。我没有时间把它缩短。”是的,我需要对类进行泛化,但目前我只需要让我得到的东西发挥作用!