java - 为什么 if 语句中的表达式顺序很重要

标签 java c++ c if-statement

假设我有一个 IF 条件:

if (A || B) 
    ∧
    |
    |
   left
{ 
   // do something  
}

现在假设 AB 更有可能收到真值,为什么我要关心左边是哪一个?

如果我将它们都放在 IF 括号中,那么我知道(作为代码的程序员)双方都需要。

问题是,我的教授在他的讲义上写道,我应该把“更有可能获得真值的变量”放在左边。

有人可以解释一下好处吗?好吧,我把它放在左边...我得到了什么?运行 ?

最佳答案

不仅仅是选择左边最有可能的条件。你也可以在左边有一个安全 guard ,这意味着你只能有一个订单。考虑

if (s == null || s.length() == 0) // if the String is null or empty.

您不能在此处调换顺序,因为第一个条件可以防止第二个条件抛出 NPE。

同样你可以拥有

if (s != null && s.length() > 0) // if the String is not empty

|| 选择最可能为真或为 && 选择最有可能为假的原因是微优化,以避免在第二个表达式中计算的成本.这是否转化为可衡量的性能差异是值得商榷的。

关于java - 为什么 if 语句中的表达式顺序很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12119240/

相关文章:

java - getWriter() 如何在 HttpServletResponse 中发挥作用?

c - 如何检查 CLI 定义的 MACRO (-DMACRO=) 是否已定义

c++ - C 风格字符串释放

objective-c - 在 C 中访问 Apple Earbud Clicker 控件

c++ - 如何默认构造迭代器的value_type作为函数中的默认参数?

java - 仅当Mono为空时如何执行操作并抛出不为空的错误

java - Oracle DB 时间戳到 Java 时间戳 : Confusion

java - 我们可以创建一个接口(interface)对象吗?

c++ - TinyXML 无法读取自己的文件

c++ - 如何在下一个函数调用中从最后一个位置使用 STL 映射删除?