【发布时间】:2011-03-02 21:07:17
【问题描述】:
为什么C99 mixed declarations and code 仍然没有用于像Linux kernel 或GNOME 这样的开源C 项目?
我真的很喜欢混合声明和代码,因为它通过将变量的范围限制在尽可能窄的范围内,使代码更具可读性并防止难以看到的错误。这是 Google for C++ 推荐的。
例如,对于 C99 混合声明和代码,Linux requires 至少 GCC 3.2 和 GCC 3.1 has support
【问题讨论】:
-
我真的不喜欢混合声明,因为它们会降低代码的可读性并导致难以看到错误。
-
贾斯汀,我完全不同意你的编辑。我讨厌看到可以适用于多种语言的标题(采用粗体大字体),并且不得不在屏幕上的其他位置查找以低对比度、小字体书写的标签,以便知道我是否对这个问题有话要说。仅由标签消除歧义的模糊标题是可用性的噩梦。在可用性方面,标签通常会添加信息,而不是取代它。
-
@Carl, @Eduardo 我认为你们都夸大了对方喜欢的风格可能导致的错误。函数作用域的变量会导致代码腐烂,因为代码被删除并且变量变得未使用,而如果不注意命名,块作用域可能会导致变量隐藏。这两个问题都被一组很好的编译器警告所捕获,但狭窄的范围仍然是优越的,因为它可以更容易地发现愚蠢的数据使用模式......这反过来又会导致更好、更易理解的代码。
-
@Carl:我认为这是一个概括:有时,混合声明可以使代码更具可读性;一个经常出现的例子:首先在函数体内检查函数参数的前提条件,因为,你知道 - 这是一个 pre 条件;添加另一个块(导致额外的缩进级别)只是为了这似乎有点矫枉过正,imo
-
@Christoph, @Dan,当然总有例外的规则。我真的想以幽默的方式陈述一个相反的观点,而不是真正想就变量声明进行单方面的争论。
标签: c scope c99 variable-declaration