【问题标题】:java if action and return [closed]java if 操作并返回 [关闭]
【发布时间】:2017-07-01 15:12:29
【问题描述】:

我想编写干净快速的代码来评估某些条件,如果条件为真则执行操作并返回该条件值。

到目前为止,我有以下选择:

选项 1:

public boolean method() {
    if (...condition...) {
        action();
        return true;
    } else {
        return false;
    }
}

选项 2:

public boolean method() {
    boolean actionNecessary = ...condition...;
    if (actionNecessary) {
        action();
    }
    return actionNecessary;
}

选项 3:

 public boolean method() {
        return ifDoReturn(...condition..., () -> {
            action();
        });
    }

使用辅助方法:

public static boolean ifDoReturn(boolean condition, Runnable action) {
    if (condition) {
        action.run();
    }
    return condition;
}

第一个选项最长,第二个更短也很快,第三个最短但很棘手,没有编译器优化也很慢。

感谢您的帮助

【问题讨论】:

  • 这取决于很多因素。贵公司有可遵循的标准吗?谁来维护?这是一次性程序吗?没有好的回应,因为这是一个个案。
  • 第二个简单易读。使用它。
  • 是的,但是帮助方法的适当名称可能会有很大帮助。
  • 我倾向于第二种选择,但可以接受第一种选择。我认为最后一个选项不像其他两个选项那样可读,因此不会认为它是一个好的选择。
  • 不要把简单的事情搞得太复杂(适用于第三种解决方案),第一种方法有多余的,因为它可以很容易地重写为第二种方法,因此我会选择第二种方法。如果您对可读代码感兴趣,请参阅 Clean Code 一书。

标签: java if-statement return action


【解决方案1】:

“过早的优化是万恶之源。” - Donald Knuth

我相信你想多了。 JVM 足够聪明,可以处理琐碎的“微优化”。在简单的if...else 逻辑中,通常应该遵循其团队制定的软件开发标准。无论您采用何种方法,您都很难找到显着的性能提升。如果代码经常被调用,那么即时编译器(“JIT”)无论如何都会将其编译为目标代码。

综上所述,在我个人看来,选项 #2 是最明确的。

对于它的价值,here 是对 Java 优化技术的更深入研究;最重要的是,涵盖何时以及为何优化

【讨论】:

  • 感谢大家为#2 投票。无论如何,我缺少更多的语法糖来很好地表达 Java 中的这种常见模式。我接受这个答案,因为它只是作为答案写的回复:)。
  • 查看 Joshua Bloch 的 Effective Java 和 Robert Martin 的 Clean Code。大多数称职的 Java 团队都应该遵循这些经验法则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
相关资源
最近更新 更多