优化对函数的条件调用

时间:2012-11-17 13:00:34

标签: c# code-analysis

是否有更高效或更好的方法来重写此代码?

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

一般来说,没有。

如果被调用的函数重新评估条件,那么可能是的,通过提升函数的一部分来重新评估函数的条件,因为已知条件为真。 (这称为“部分评估”)。

如果condition1和condition2有关系,那么也许是。想象一下,condition1由几个术语组成

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