5

我的 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

4 回答 4

8

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

我什至不使用这个:

if(foo)
   return bar;

我喜欢这个:

if(foo){
   return bar;
}

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

于 2013-06-13T00:07:21.467 回答
4

始终使用大括号。有一天,你会想在你的 if 或 else 块中放第二条语句,然后你会希望你有。但是,你真的在​​做instanceof检查吗?你可以修改你的程序来将它们变成多态对象行为吗?

于 2013-06-13T00:07:58.287 回答
2

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

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

于 2013-06-13T00:04:14.307 回答
1

建议始终使用大括号,但是否存在没有正文使用大括号的情况,最好不要使用它们,因为它更具可读性

if(condition){

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

}

如果你总是使用大括号,它会是这样的。可能我在某个地方弄错了。

if(condition){

 } else{ 

       if (condition) {
             ...
       }else {

           if (condition3){

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

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

于 2013-06-13T02:14:22.173 回答