当前位置: 首页 > 面试题库 >

if和if-else之间有什么明显的区别吗?

孔才
2023-03-14
问题内容

给定以下代码段,有什么明显的区别?

public boolean foo(int input) {
   if(input > 10) {
       doStuff();
       return true;
   }
   if(input == 0) {
       doOtherStuff();
       return true;
   }

   return false;
}

public boolean foo(int input) {
   if(input > 10) {
      doStuff();
      return true;
   } else if(input == 0) {
      doOtherStuff();
      return true;
   } else {
      return false;
   }
}

还是单出口原则在这段代码中会更好…

public boolean foo(int input) {
   boolean toBeReturned = false;
   if(input > 10) {
      doStuff();
      toBeReturned = true;
   } else if(input == 0) {
      doOtherStuff();
      toBeReturned = true;
   }

   return toBeReturned;
}

有没有明显的性能差异?您是否觉得其中一个比另一个更可维护/可读?


问题答案:

在第二个示例中,您非常清楚地指出两个条件是互斥的。
对于第一个,并不清楚,并且在(不太可能)的事件中,input在两个if之间添加to的分配,逻辑将发生变化。
假设将来有人在input = 0第二个if之前添加
当然,这不太可能发生,但是如果我们在这里谈论可维护性,if-else明确指出存在相互排斥的条件,而一堆if则没有,并且它们之间的依存程度不如if -其他块。


编辑:现在,在这个特定示例中,我看到return子句强制了相互排他性,但是再次,我们正在谈论可维护性和可读性。

无论如何,关于性能,如果它是用Java编码的,那么您不应该关心几个if块的性能,如果它是嵌入在速度很慢的硬件中的C,也许,但肯定不是Java。



 类似资料:
  • 问题内容: 我想知道为什么要使用一个语句而不是多个语句?例如,这样做之间有什么区别: 还有这个: 他们似乎做的完全一样。 问题答案:

  • 本文向大家介绍if-else和switch之间的区别,包括了if-else和switch之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解if-else语句和'switch'语句之间的区别。 if-else 根据语句中的表达式,将生成输出。 它对多个选择使用多个语句。 该语句测试是否相等。 它可以用来测试逻辑表达式。 它可以计算整数,字符,指针,浮点类型和布尔类型。 仅执行“

  • 问题内容: 两者之间有什么区别吗? …和… ? 问题答案: 它们是相同的,但是如果您的代码中包含MVC并且不想在代码中产生大量回声,那么第二个方法就很棒。例如,在我的文件(Zend Framework)中,我将编写如下内容:

  • if语句后面可以跟一个else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if, else if, else语句时,要记住几点。 一个if可以有零个或一个else的,它必须在任何其他if之后。 一个if可以有零到多个else if是,他们必须在其他之前。 一旦else if成功, else if任何其他else if else不会被测试。

  • if语句构造可以有一个或多个可选的else-if构造。 当if条件失败时,紧接着执行else-if 。 当else-if也失败时,执行其后继else-if语句(如果有的话),依此类推。 可选的else放在最后,当上述任何条件都不成立时执行。 所有其他语句(else-if和else)都是可选的。 else-if可以使用一次或多次。 else必须始终放在构造的末尾,并且只能出现一次。 语法 (Synt

  • 如果{}和if之间有什么区别 ? 举个例子 vs. 以及具有和的类? 举个例子 VS