假设我有这段代码:
if (condition1 || condition2) {
some_complex_operation(); // memory or time wise, doesn't matter
if (condition1) {
doJob1();
}
if (condition2) {
doJob2();
}
}
现在当然正常的程序是省略第一个if条件,但是因为我希望我的复杂操作只在满足其中一个条件时发生,所以我希望每次都避免这样做。
在语法上有更好的方法来重写这部分代码吗?
答案 0 :(得分:1)
除非检查您的条件是否昂贵,否则我认为您的代码很好(如果支票很贵,您可以在第一个null
之前将它们转换为布尔值。)
替代方案是:
将调用移到if
内的复杂操作并移除外部if
,但我现在更喜欢它,因为它在一个块中。
根据条件的值,您可以使用if
语句而不是两个switch
语句,但这不会产生太大影响。
如果两个条件不能同时为真,则可以在第二个内if
之前放置else
。你甚至可以删除第二张支票,只使用if
,但是你必须确保条件的数量永远不会改变。
当然,一般情况下else
,总是放置最先发生的条件(在两种情况下都是如此),因此当第一个条件评估为or
时,不需要检查第二个条件。