我从C++ faq读到“当地人应该在他们第一次使用时宣布”。 Scott Meyer的Effective C ++ Item 26也出于性能原因提出了建议。但是我最近碰巧听到有人认为编译器非常聪明,无论在函数中实际使用的范围如何,都可以优化变量。并且他建议在函数顶部声明变量以便于理解(尽管我不买这个原因)。他对编译器优化是否正确?
(问题在于性能和编译器优化。不是代码可读性)。
答案 0 :(得分:4)
编译器与它无关。有两个一般规则 关于定义变量(本地或其他):保持范围和 可见性尽可能小,如果可能的话,初始化 定义。这些规则适用于人类读者,而不适用于编译器。 两者都导致“在第一次使用附近宣布当地人”,作为一个 推论。
答案 1 :(得分:2)
是的,他们足够聪明。
但是还有一个软件技术答案:你应该这样做,因为它是一种更好的编程风格。
答案 2 :(得分:0)
将变量声明放在使用变量的位置附近可以增加局部性,并且可以使代码和程序流更容易理解。此外,如果变量放在嵌套范围内,那么当离开声明的范围时,它将被“破坏”,从而帮助实现RAII等。
答案 3 :(得分:0)
您应该始终努力编写易于理解和理解的源代码。
即使编译器能够优化它,仍然可以做到这一点。它为您提供提高的可读性,您不需要缓存并记住在块开始时变量被初始化的值。