在 C++ 中最小化变量的范围

Ada*_*ski 3 c++ variables scope

我编程有一段时间了,我已经开始尝试改进我的代码。由于我真的很讨厌创建大量在长函数中只使用一次的变量,因此使用方括号缩短变量范围是一种好习惯吗?即改为写作:

void fcn()
{
  int var1;
  // some part of fcn
  // use of var1;
  // rest of fcn
}
Run Code Online (Sandbox Code Playgroud)

写:

void fcn()
{
  // some part of fcn
  {
    int var1;
    // use of var100;
  }
  // rest of fcn
}
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 8

是的,保持变量的范围尽可能紧凑确实是一个好主意。

在您的情况下,除非您绝对确定您的代码 usingvar1只会用于fcn(如果我的经验有任何意义,我倾向于错误判断),您可以将该代码拆分为单独的函数。你的程序会以这种方式更好地扩展,测试也会更简单。否则,像目前一样使用范围块。


Oli*_*liv 5

在某些情况下,这种方法是一种很好的做法。

它在“if/range for/while/case”语句周围广泛传播,以至于在 C++17 和 C++20 中添加了这些语句中的显式初始化程序。