我經常看到其他函數被多次調用而不是一次性存儲函數結果的函數。函數調用與局部變量
即(1):
void ExampleFunction()
{
if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
{
a = TestFunction();
return;
}
b = TestFunction();
}
相反,我會寫這樣的說法,(2):
void ExampleFunction()
{
int test = TestFunction();
if (test > x || test < y || test == z)
{
a = test;
return;
}
b = test;
}
我認爲第2版是更好的閱讀和更好進行調試。 但我想知道爲什麼人們喜歡1號? 有什麼我沒有看到?性能問題? 當我看到它時,我發現在最壞的情況下,數字(1)中有4個函數調用,而不是數字(2)中的1個函數調用,因此性能在數字(1)中應該更差,不是嗎?
問問編寫代碼的人! –
編譯器可能會將代碼優化爲您的替代方案,因此性能不成問題。我的自我,我發現第一個選擇其實更可讀。 –
可能有副作用,意味着必須每次調用函數。所以你的問題的答案是:這取決於。 – Default