09 January 2024

C++ 核心指南目录

“Don’t insist that all declarations should be at the top of a function”

理由

“所有声明都要放在开始处”是一个过时的编程规则。老的编程语言不允许在语句之后初始化变量和常量。这个限制会导致代码很长,很容易因为未初始化或错误的初始化导致错误。

坏例子

int use(int x)
{
    int i;
    char c;
    double d;

    // ... some stuff ...

    if (x < i) {
        // ...
        i = f(x, d);
    }
    if (i < x) {
        // ...
        i = g(x, c);
    }
    return i;
}

变量声明和变量使用的位置越远,越容易出现 bug。幸运的是,编译器能捕捉很多“设置之前使用”的错误。但是,遗憾的是,编译器不能捕捉到所有这类错误。就算在这个小例子中,我们也很难发现错误。

其他要求