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に関係がある場合は、おそらくそうです。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のサブセットを意味している可能性があります。その後、テストの順序を入れ替えます。

于 2012-11-17T17:29:30.723 に答える