1

有没有更有效或更好的方法来重写这段代码?

if (condition 1 = true)
{
    // Call to function 1
}

if (condition 2 = true)
{
    // Call to function 2
}
4

2 回答 2

3

我认为简短的回答是否定的。长答案取决于条件和功能。

于 2012-11-17T13:08:46.977 回答
1

一般来说,没有。

如果被调用的函数重新评估条件,那么可能是的,方法是将重新评估条件的函数部分从函数中取出,因为已知条件为真。(这称为“部分评估”)。

如果 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 的一个子集,然后你会交换测试的顺序。

于 2012-11-17T17:29:30.723 回答