是否有更高效或更好的方法來重寫此代碼?優化對函數的條件調用
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
}
我認爲簡答題是NO。長答案取決於條件和功能。
一般來說,沒有。
如果被調用的函數重新評估條件,那麼可能是的,通過提升函數中重新評估條件的函數部分,因爲條件已知是正確的。 (這被稱爲「部分評估」)。
如果condition1和condition2有關係,那麼可能是。試想一下,條件1是由幾個方面
c1a and c1b and .. c1n
和C2組成的
c2a and c2b and ... c2m
如果文C1 i的某個子集意味着C2J的某個子集,那麼你就可以更有效地評估的條件:
if (c1isubset) {
if (c1irest)
{ // call to function 1
}
endif
if (c2jrest)
{ // call to function2)
}
}
當然,這可能是因爲C2J的一個子集意味着文C1 i的一個子集,然後你身邊交換測試的順序。