在Java中应避免使用多个if语句,例如“if(condition)if(condition)...”吗?

时间:2013-06-13 00:02:19

标签: 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 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) {
    ...
}

我理解这是有道理的,并且很容易失去缩进,但我担心的是可读性可能会受到影响。后者看起来更干净,但节省的空间值得潜在的混乱吗?

我认为两者之间的性能差异是微不足道的,如果有的话。

作为一个后续问题:是否有多少'if(条件)可以放在一行中,或者更确切地说它变得太多了?

4 个答案:

答案 0 :(得分:8)

我投票支持你已有的方式。

我甚至不使用它:

if(foo)
   return bar;

我喜欢这样:

if(foo){
   return bar;
}

“必须编写程序供人们阅读,并且只是偶然让机器执行”

答案 1 :(得分:4)

始终使用牙箍。有一天,你会想要在你的if或else块中加上第二个声明,然后你会希望你有。但是,你真的在​​进行instanceof检查吗?您是否可以重新编写程序以将其转换为多态对象行为?

答案 2 :(得分:2)

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

抱歉,我打算投票结束。这将是一场没有答案的辩论。

答案 3 :(得分:1)

建议总是使用大括号,但有没有身体使用大括号的情况,最好不要使用大括号,因为它更具可读性

if(condition){

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

}

如果你总是使用大括号,那就像这样。可能我在某个地方犯了错误。

if(condition){

 } else{ 

       if (condition) {
             ...
       }else {

           if (condition3){

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

所以我认为使用总是取决于可读性,就像上面说的那样,程序必须是为了人们阅读而编写的,并且只是为了机器的执行而偶然。