如何避免检查包含复杂操作的语句中的每个条件

时间:2017-03-02 16:06:01

标签: performance syntax

假设我有这段代码:

if (condition1 || condition2) {
    some_complex_operation(); // memory or time wise, doesn't matter
    if (condition1) {
        doJob1();
    }
    if (condition2) {
        doJob2();
    }
}

现在当然正常的程序是省略第一个if条件,但是因为我希望我的复杂操作只在满足其中一个条件时发生,所以我希望每次都避免这样做。

在语法上有更好的方法来重写这部分代码吗?

1 个答案:

答案 0 :(得分:1)

除非检查您的条件是否昂贵,否则我认为您的代码很好(如果支票很贵,您可以在第一个null之前将它们转换为布尔值。)

替代方案是:

  • 将调用移到if内的复杂操作并移除外部if,但我现在更喜欢它,因为它在一个块中。

  • 根据条件的值,您可以使用if语句而不是两个switch语句,但这不会产生太大影响。

如果两个条件不能同时为真,则可以在第二个内if之前放置else。你甚至可以删除第二张支票,只使用if,但是你必须确保条件的数量永远不会改变。

当然,一般情况下else,总是放置最先发生的条件(在两种情况下都是如此),因此当第一个条件评估为or时,不需要检查第二个条件。