c++ - 我什么时候应该在 C++ 中重用变量名

标签 c++

我知道你可以在 C++ 中重用变量名,但我想知道我是否应该这样做。我不是在谈论重用变量本身,就像全局变量一样。我说的是在一个作用域中声明和使用具有特定名称的变量,然后在不同的作用域中声明和使用另一个具有相同名称的变量。例如:

void Func1(int b) { /* Code here. */ };
void Func2(int b) { /* Different code here. */ };

void main()
{
    {
        int a=1;
        // Do stuff with this variable.
    }
    {
        int a=5;
        // Do different stuff with this variable.
    }
    int b=10:
    Func1(b);
    Func2(b);
}

这样做似乎可以允许更短的变量名称,并允许复制和粘贴代码而不必更改变量名称,但这可能会导致困惑。是否有关于何时执行此操作的风格指南或普遍接受的实践?

我搜索了与此类似的问题,但找不到任何内容。我发现了一些有关全局变量的内容,但这不是我要找的。

最佳答案

所谓的较短变量名的好处可能会引起人们的兴趣,但更令人感兴趣的是较短的变量范围。一般来说,变量的范围越小越好。因此,在小作用域内声明变量是一种很好的做法,并且纯粹出于此目的引入裸作用域也是一种很好的做法。

一旦解决了这个问题,我们就会考虑是否可以在不同作用域中重用变量名的问题。

我想说选择变量名最重要的是:

The name of a variable should be chosen in such a way as to best describe what the value of the variable stands for.

任何其他问题都是次要的。这意味着某个作用域内变量的最佳名称不能以任何方式依赖于其他作用域中存在的变量。

这又意味着:跨范围重用变量名称,这是完全可以的。

关于c++ - 我什么时候应该在 C++ 中重用变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854782/

相关文章:

c++ - 为什么 const char* 强制转换为 std::string 有效?

c++ - 使用 unique_ptr 作为参数在类上调用方法是否合法?

c++ - 将编译的最小 C++ 程序

c++ - 如果单个 cpp 文件构建可执行文件

c++ - ns-3 中的 Waf 配置

c++ - ./lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a 的用法是什么

c++ - 如何在开始时停止程序以将GDB附加到该程序?

c++ - 打印以记录核心转储文件堆栈,Windows 上的 C++?

c++ - Eclipse 索引器不工作

c++ - 使用 boost::filesystem 3.0 迭代文件