函数调用与局部变量

Dan*_*elG 8 c++ variables function local call

我经常看到多次调用其他函数的函数,而不是一次存储函数的结果.

(1):

void ExampleFunction()
{ 
    if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
    {
        a = TestFunction();
        return; 
    }
    b = TestFunction();
}
Run Code Online (Sandbox Code Playgroud)

相反,我会这样写,(2):

void ExampleFunction()
{
    int test = TestFunction();
    if (test > x || test < y || test == z)
    {
        a = test;
        return;
    }
    b = test;
}
Run Code Online (Sandbox Code Playgroud)

我认为版本2更好阅读,更好地调试.但我想知道为什么人们会像1号那样做?有什么我看不到的吗?绩效问题?当我看到它时,我在最坏的情况下看到数字(1)中的4个函数调用而不是数字(2)中的1个函数调用,因此性能应该在数字(1)中更差,不是吗?

Fre*_*Foo 1

我认为版本 2 更易于阅读和调试。

同意。

所以第(1)项的性能应该更差,不是吗?

不必要。如果TestFunction足够小,那么编译器可能会决定优化多个调用。在其他情况下,性能是否重要取决于ExampleFunction调用的频率。如果不经常,则优化可维护性。

另外,TestFunction可能会有副作用,但在这种情况下,代码或注释应该以某种方式清楚地表明这一点。