哪个更好:多个“if”语句或一个具有多个条件的“if”?

新手上路,请多包涵

对于我的工作,我必须开发一个小型 Java 应用程序来解析非常大的 XML 文件(~300k 行)以选择非常具体的数据(使用 Pattern ),所以我试图对其进行一些优化。我想知道这两个片段之间有什么更好的地方:

 if (boolean_condition && matcher.find(string)) {
    ...
}

或者

if (boolean_condition) {
    if (matcher.find(string)) {
        ...
    }
}

其他详情:

  • 这些 if 语句在循环内的每次迭代中执行(~20k 次迭代)
  • boolean_condition 是一个 boolean 使用外部函数在每次迭代中计算
  • 如果 boolean 设置为 false ,我不需要测试匹配的正则表达式

谢谢你的帮助。

原文由 3rgo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 517
2 个回答

我遵循的一条黄金法则是尽可能地“ 避免嵌套”。但是,如果以让我的单一 if 条件过于复杂为代价,我不介意将其嵌套。

此外,您正在使用短路 && 运算符。所以如果布尔值是假的,它甚至不会尝试匹配!

所以,

 if (boolean_condition && matcher.find(string)) {
    ...
}

是要走的路!

原文由 adarshr 发布,翻译遵循 CC BY-SA 4.0 许可协议

以下两种方法:

 public void oneIf(boolean a, boolean b)
{
    if (a && b)
    {
    }
}

public void twoIfs(boolean a, boolean b)
{
    if (a)
    {
        if (b)
        {
        }
    }
}

为方法主体生成完全相同的字节代码,因此不会有任何性能差异,这意味着它纯粹是您使用的风格问题(我个人更喜欢第一种风格)。

原文由 Jonathan 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题