1
6
经验法则是变量应该尽可能的局部化。如果你能做到的话,可以加分
|
2
5
好的,关于块顶部的声明是c89和k&r,但是由于c99,您可以混合声明和语句。这种风格持续存在,可能是有充分理由的,但不是必需的。 有一段时间,如果您在使用本地变量的地方声明了很多本地变量,那么一些编译器会做得更好,因为这会使寄存器分配更好。在C99之前,您必须在块的顶部声明它们,或者使用供应商扩展,但是您仍然可以决定实际上 使用 每个变量只在代码的局部区域中。 在一个点上,用更灵活的声明来支持这一点可能是很重要的,但我怀疑现在的优化器不需要这种帮助。 有些编码标准要求在函数顶部声明。我不知道这样做是为了让你能找到它们,还是只是因为那些不这样做可能会限制向后可移植性的日子留下的。 一般来说,标准越正式,它就越不喜欢交错语句和声明,除了循环控制变量。就我个人而言,我不认为有什么问题。 混合声明的优点 :地点。对编译器好,对读者好。在函数顶部声明循环变量可能带来什么好处?为了一个不相关的目的在页面下面重用一个变量,对于可能不需要的交互来说,这看起来既混乱又不明智。 分组声明的优点 :代码在主观上看起来更干净,您知道在哪里可以找到每个声明,如果您的函数的顶部离变量的使用太远,也许这就告诉您需要从明显太大的函数中提取第二个或第三个函数。 |
3
2
其中声明变量不会影响代码生成。所有的函数变量在第一行代码执行之前放在堆栈上(至少这是观察到的行为)。正如您已经知道的,关于变量声明的规则早已过时。在顶部声明变量有以下优点
是的,我会让变量尽可能的局部化。如果一个变量只在一个循环或控制流中使用,甚至是一个无意义的{}对(我用它来防止名称冲突),那么在那里声明它们。把著名的n或i变量带入for循环。如果有多个,则每个for循环都需要一个唯一的var名称,这将变得烦人。 |
Tor · 使用Box<None>值初始化struct 2 年前 |
Judy · 在两个JavaScript函数中更新全局变量 2 年前 |
ask_me · Python中关于局部和全局范围的概念性问题 2 年前 |
Astha Gupta · 闭包中的词汇作用域是如何发生的?[重复] 2 年前 |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 6 年前 |
pag-r · Golang开关变量范围 6 年前 |
yurnero · MATLAB:“加载”一个快速访问功能 6 年前 |