Вызовы функций против локальных переменных

Я часто вижу функции, где другие функции вызываются несколько раз вместо того, чтобы сохранять результат функции один раз.

т.е.(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), не так ли?

Ответы на вопрос(5)

Ваш ответ на вопрос