r
《Li
ux内核代码风格》学习笔记r
r
①缩进r
A、制表符是8个字符,所以缩进也是8个字符。r
B、如果你需要3级以上的缩进,不管用何种方式你的代码已经有问题了,应该修正你的程序。r
C、在switch语句中消除多级缩进的首选的方式是让“switch”和从属于它的“case”标签对齐于同一列,r
而不要“两次缩进”“case”标签。r
D、不要把多个语句放在一行里,也不要在一行里放多个赋值语句。r
E、除了注释、文档和Kco
fig之外,不要使用空格来缩进。r
r
②把长的行和字符串打散r
长于80列的语句要打散成有意义的片段。每个片段要明显短于原来的语句,而且放置的位置也明显的靠右。r
同样的规则也适用于有很长参数列表的函数头。长字符串也要打散成较短的字符串。r
唯一的例外是超过80列可以大幅度提高可读性并且不会隐藏信息的情况。r
r
③大括号和空格的放置r
A、把起始大括号放在行尾,而把结束大括号放在行首。这适用于所有的非函数语句块r
(if、switch、for、while、do)。有一个例外,那就是函数:函数的起始大括号放置于下一行的开头。r
B、结束大括号独自占据一行,除非它后面跟着同一个语句的剩余部分,r
也就是do语句中的“while”或者if语句中的“else”。r
C、当只有一个单独的语句的时候,不用加不必要的大括号。r
这点不适用于本身为某个条件语句的一个分支的单独语句。这时需要在两个分支里都使用大括号。r
D、(大多数)关键字后要加一个空格。在这些关键字之后放一个空格:ifswitchcasefordowhile。r
但是不要在sizeof、typeof、alig
of或者__attribute__这些关键字之后放空格。r
E、不要在小括号里的表达式两侧加空格。r
F、当声明指针类型或者返回指针类型的函数时,“”的首选使用方式是使之靠近变量名或者函数名,而不是靠近类型名。r
G、在大多数二元和三元操作符两侧使用一个空格,但是一元操作符后不要加空格。r
H、”和“”结构体成员操作符前后不加空格。r
I、不要在行尾留空白。r
r
④命名r
A、全局变量需要有一个具描述性的名字,就像全局函数。r
B、本地变量名应该简短,而且能够表达相关的含义。如果你有一些随机的整数型的循环计数器,它应该被称为“i”。r
“tmp”可以用来称呼任意类型的临时变量。r
r
⑤Typedefr
A、对结构体和指针使用typedef是一个错误。r
B、Typedef只在下列情况下有用:r
a完全不透明的对象(这种情况下要主动使用typedef来隐藏这个对象实际上是什么)。r
b清楚的整数类型,如此,这层抽象就可以帮助消除到底是“i
t”还是“lo
g”的混淆。r
c当你r