我已经编程了一段时间,我已经开始尝试改进我的代码。由于我真的很讨厌创建在长函数中只使用一次的大量变量,那么通过使用括号来缩短变量范围是否是一种好习惯? 即 而是写:
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;
完成此操作后,您选择的范围将受到更多限制。如果还有选择,请选择尽可能窄的范围。