このコードを書き直すためのはるかに効率的またはより良い方法はありますか?
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に関係がある場合は、おそらくそうです。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のサブセットを意味している可能性があります。その後、テストの順序を入れ替えます。