在C++中最小化变量的范围
Minimalizing variable's scope in C++
我已经编程了一段时间,我已经开始尝试改进我的代码。由于我真的很讨厌创建在长函数中只使用一次的大量变量,那么通过使用括号来缩短变量范围是否是一种好习惯? 即 而是写:
void fcn()
{
int var1;
// some part of fcn
// use of var1;
// rest of fcn
}
写:
void fcn()
{
// some part of fcn
{
int var1;
// use of var100;
}
// rest of fcn
}
是的,保持变量的范围尽可能小确实是一个好主意。
在你的情况下,除非你绝对确定你的代码使用var1
只会在fcn
中使用(如果我的经验是可以参考的,我倾向于误判(,否则你可以将该代码拆分为一个单独的函数。这样,您的程序将更好地扩展,并且测试也将更简单。否则,请像当前一样使用范围块。
当然,在某些情况下,这种方法是一种很好的做法。
它围绕"if/range for/while/case"语句如此广泛,以至于在这些语句中添加了显式初始值设定项 C++17 和 C++20。
你不应该在任何地方写int var1;
。
首先var1
是一个可怕的名字。
其次,如果任何代码路径可以在分配之前读取var1
,则您现在有可能出现未定义的行为。
喜欢
int meaningfulName = initialValue;
甚至更好
const int meaningfulName = value;
完成此操作后,您选择的范围将受到更多限制。如果还有选择,请选择尽可能窄的范围。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 如果非动态变量被指针引用,何时超出范围?
- 为什么我的变量存在于其范围之外
- 变量超出范围后如何保留向量值?
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 在 c++ 中确定堆栈上的变量范围
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 如何从未知视图中声明范围::v3::View 变量
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 是否未定义将对函数范围变量的引用作为值返回
- 无法从另一个函数访问文件范围变量的内容
- 如何访问C 中的功能范围变量
- C++ 程序和范围变量
- 性能对象属性与范围变量
- 存储lambda函数,该函数将范围变量捕获为类成员以供重用
- 何时分配块范围变量
- 在 c++ 中声明一个全局范围变量 const