.
C 语言编程风格
缩进格式
Tab 是 8 个字符 ,于是缩进也是 8 个字符 .有很多怪异的风格 ,他们将缩进格式定义为 4 个
字符 (设置为 2 个字符 !) 的深度 ,这就象试图将 PI 定义为 3 一样让人难以接受 .
理由是 :缩进的大小是为了清楚的定义一个块的开始和结束 .特别是当你已经在计算机前
面呆了 20 多个小时了以后 ,你会发现一个大的缩进格式使得你对程序的理解更容易 .
现在 ,有一些人说 ,使用 8 个字符的缩进使得代码离右边很近 ,在 80 个字符宽度的终端屏
幕上看程序很难受 .回答是 ,但你的程序有 3 个以上的缩进的时候 ,你就应该修改你的程序 .
总之 ,8 个字符的缩进使得程序易读 ,还有一个附加的好处 ,就是它能在你将程序变得嵌套层
数太多的时候给你警告 .这个时候 ,你应该修改你的程序 .
:大括号的位置
另外一个 C 程序编程风格的问题是对大括号的处理 .同缩进大小不同 ,几乎没有什么理由
去选择一种而不选择另外一种风格 ,但有一种推荐的风格 ,它是 Kernighan 和 Ritchie 的经典的
那本书带来的 ,它将开始
的大括号放在一行的最后 ,而将结束大括号放在一行的第一位 ,如下所示 :
if (x is true) { we do y }
然而 ,还有一种特殊的情况 :命名函数 :开始的括号是放在下一行的第一位 ,如下 :
int function(int x) { body of function }
所有非正统的人会非难这种不一致性 ,但是 ,所有思维正常的人明白 : ( 第一 ) K&R 是
___对___ 的,(第二 )如果 K&R 不对 ,请参见第一条 . (:-)) 另外 ,函数也是特殊的 ,不一定非得
一致 .
需要注意的是结束的括号在它所占的那一行是空的 ,__除了 __ 它跟随着同一条语句的继
续符号 .如 "while" 在 do-while 循环中 ,或者 "else" 在 if 语句中 .如下 :
do { body of do-loop } while (condition);
以及
if (x == y) { .. } else if (x > y) { ... } else { }
理由 : K&R.
另外 ,注意到这种大括号的放置方法减小了空行的数量 ,但却没有减少可读性 .于是 ,
在屏幕大小受到限制的时候 ,你就可以有更多的空行来写些注释了 .
命名系统
C 是一种简洁的语言 ,那么 ,命名也应该是简洁的 .同 MODULE-2 以及 ASCAL 语言不同
的是 ,C 程序员不使用诸如 ThisVariableIsATemporaryCounter 之类的命名方式 .一个 C 语言的
程序员会将之命名为 "tmp", 这很容易书写 ,且并不是那么难以去理解 .
然而 ,当混合类型的名字不得不出现的时候 ,描述性名字对全局变量来说是必要的了 .调
用一个名为 "foo" 全局的函数是很让人恼火的 .全局变量 (只有你必须使用的时候才使用它 )