有没有更有效或更好的方法来重写这段代码?
if (condition 1 = true)
{
// Call to function 1
}
if (condition 2 = true)
{
// Call to function 2
}
有没有更有效或更好的方法来重写这段代码?
if (condition 1 = true)
{
// Call to function 1
}
if (condition 2 = true)
{
// Call to function 2
}
我认为简短的回答是否定的。长答案取决于条件和功能。
一般来说,没有。
如果被调用的函数重新评估条件,那么可能是的,方法是将重新评估条件的函数部分从函数中取出,因为已知条件为真。(这称为“部分评估”)。
如果 condition1 和 condition2 有关系,那么也许是的。想象条件1由几个项组成
c1a and c1b and .. c1n
并且 c2 由
c2a and c2b and ... c2m
如果 c1i 的某个子集暗示 c2j 的某个子集,那么您可以更有效地评估条件:
if (c1isubset) {
if (c1irest)
{ // call to function 1
}
endif
if (c2jrest)
{ // call to function2)
}
}
当然,c2j 的一个子集可能意味着 c1i 的一个子集,然后你会交换测试的顺序。