考虑以下:
if ((a || b) && (c || d))
{
if (a && c) {...}
else if (b && d) {...}
else {...}
}
else {...}
Run Code Online (Sandbox Code Playgroud)
其中a,b,c和d是导致表达式bool.
从代码中可以清楚地看出,很少有这些表达式被重新计算.在a)清晰度方面是否有更好的方法?b)效率?
惊喜:我认为你真的不需要外部if声明.欣赏使用逻辑定律,外部if可以重写:
if ((a || b) && (c || d))
Run Code Online (Sandbox Code Playgroud)
至
if ( ((a && c) || (a && d)) || ((b && c) || (b && d)) )
Run Code Online (Sandbox Code Playgroud)
换句话说,如果(a && c)或者(b && d)为真,那么外部if将始终评估为true,因此可以将其删除.相反,你可以这样写:
if (a && c) {...}
else if (b && d) {...}
else if ((a && d) || (b && c)) {...} // your original 'inner' else
else {...} // your original 'outer' else
Run Code Online (Sandbox Code Playgroud)