03 April 2023

C++ 核心指南目录

“Don’t use a variable for two unrelated purposes”

理由

可读性,安全性。

坏例子

void use()
{
    int i;
    for (i = 0; i < 20; ++i) { /* ... */ }
    for (i = 0; i < 200; ++i) { /* ... */ } // bad: i recycled
}

注意

为了优化资源,你可能复用一个缓冲区。就算这种情况,也请限制变量的作用域范围,注意避免因为缓冲区留下的数据引起 bug 。这是常见的安全 bug 。

void write_to_file()
{
    std::string buffer;
    // to avoid reallocations on every loop iteration
    for (auto& o : objects) {
        // First part of the work.
        generate_first_string(buffer, o);
        write_to_file(buffer);

        // Second part of the work.
        generate_second_string(buffer, o);
        write_to_file(buffer);

        // etc...
    }
}

强化

标记回收重复利用的变量