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

Performance 如何避免检查包含复杂操作的if语句中的每个条件,performance,syntax,Performance,Syntax,假设我有以下代码: if (condition1 || condition2) { some_complex_operation(); // memory or time wise, doesn't matter if (condition1) { doJob1(); } if (condition2) { doJob2(); } } 当然,这里的正常过程是省略第一个if条件,但是因为我希望我的复杂操作只在满足其中一个条件

假设我有以下代码:

if (condition1 || condition2) {
    some_complex_operation(); // memory or time wise, doesn't matter
    if (condition1) {
        doJob1();
    }
    if (condition2) {
        doJob2();
    }
}
当然,这里的正常过程是省略第一个if条件,但是因为我希望我的复杂操作只在满足其中一个条件时发生,所以我希望避免每次都这样做


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

除非对您的条件进行检查很昂贵,否则我认为您的代码是正确的(如果检查很昂贵,您可以在第一个
if
之前将其转换为布尔值)

替代办法是:

  • 将调用移到两个
    if
    中的复杂操作,并删除外部
    if
    ,但我更喜欢它现在的样子,因为它位于一个块中

  • 根据条件的值,您可以使用
    switch
    语句,而不是两个
    if
    ,但这没有多大区别

如果两个条件不能同时为真,您可以在第二个内部
If
之前放置一个
else
。您甚至可以删除第二个复选框,只使用
else
,但是您必须确保条件的数量永远不会改变

当然,一般来说,对于
,总是将最早出现的条件放在第一位(在这两种情况下),因此当第一个条件的计算结果为
true
时,无需检查第二个条件