Вызовы функций против локальных переменных
Я часто вижу функции, где другие функции вызываются несколько раз вместо того, чтобы сохранять результат функции один раз.
т.е.(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? Есть ли что-то, чего я не вижу? Проблема с производительностью? Когда я смотрю на это, я вижу в худшем случае 4 вызова функции в номере (1) вместо 1 вызова функции в номере (2), поэтому производительность должна быть хуже в числе (1), не так ли?