多个IF else条件和逻辑OR运算之间的差异

Aru*_*run 1 java conditional-statements

逻辑上是否有任何区别

if (name.startsWith("a"){
   return true;
} else if (name.startsWith("b") {
   return true;
} else if (name.startsWith("c") {
   return true;
}
Run Code Online (Sandbox Code Playgroud)

和

if(name.startsWith("a") || name.startsWith("b") || name.startsWith("c") ){
  return true;
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二个,因为它对我来说很优雅.我想明白"有什么不同吗?"

Kev*_*vin 7

他们是一样的.

第二个肯定更容易阅读,可读性在编程中非常重要.

我喜欢的规则是,如果if-else语句的多个分支产生相同的行为,我将它们组合在一起.(确保它们是完全相同的行为)


Vin*_*ele 5

在这种情况下:没有.

带有||和&&使用短路的布尔表达式,这意味着如果已经评估过,B则忽略它.因此,第一种选择并不是更有效.A || BAtrue

如果if子句的主体变大,你绝对不想使用第一个版本:

if (name.startsWith("a"){
    // lots of code
} else if (name.startsWith("b") {
    // lost of the same code
}
Run Code Online (Sandbox Code Playgroud)

代码重复是一个可怕的罪恶,通常是恼人的错误的原因.