Wywołania funkcji a zmienne lokalne
Często widzę funkcje, w których inne funkcje są wywoływane wielokrotnie, zamiast jednorazowego przechowywania wyniku funkcji.
to znaczy(1):
void ExampleFunction()
{
if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
{
a = TestFunction();
return;
}
b = TestFunction();
}
Zamiast tego napisałbym to w ten sposób(2):
void ExampleFunction()
{
int test = TestFunction();
if (test > x || test < y || test == z)
{
a = test;
return;
}
b = test;
}
Myślę, że wersja 2 jest o wiele lepsza do czytania i do debugowania. Ale zastanawiam się, dlaczego ludzie robią to jak w numerze 1? Czy jest coś, czego nie widzę? Problem z wydajnością? Kiedy patrzę na to, widzę w najgorszym przypadku 4 wywołania funkcji w liczbie (1) zamiast 1 wywołania funkcji w numerze (2), więc wydajność powinna być gorsza w liczbie (1), czyż nie?