没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
这是翻译版本,英文原版是 源码 文件夹下的
一个良好风格的程序看起来直观、美观,便于阅读,还能有助于对程序的理解,特别在代
码量比较大情况下更显现编码素质的重要性。相反没有良好的风格的代码读起来难看、晦
涩,甚至有时候一个括号没对齐就能造成对程序的曲解或者不理解。我曾经就遇见过这样
的情况,花费了很多不必要的时间在程序的上下文对照上,还 了半天没理解的程序。
后来直接用 给他转换格式来看了。特此转过来一个关于代码风格的帖子分享
一下~
Linux 内核编码风格
这是一份简短的,描述 内核首选编码风格的文档。编码风格是很个人化的东西,而且
我也不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的
风格,并且我也希望绝大多数其他代码也能遵守这个风格。所以请至少考虑一下本文所述
的观点。
首先,我建议你打印一份 的编码规范,然后不要读它。烧掉它,这是一个很高调的
具有象征意义的姿态。
!!!!!!!!!!第一章:缩进
制表符是 个字符,所以缩进也是 个字符。有些异端运动试图将缩进变为 "(乃至 #)个
字符深,这跟尝试着将圆周率 $% 的值定义为 & 没什么两样。
理由:缩进的全部意义就在于清楚的定义一个控制块起止于何处。尤其是当你盯着你的屏
幕连续看了 #' 小时之后,你将会发现大一点的缩进将会使你更容易分辨缩进。
现在,有些人会抱怨 个字符的缩进会使代码向右边移动的太远,在 ' 个字符的终端屏幕
上就很难读这样的代码。这个问题的答案是,如果你需要 & 级以上的缩进,不管缩进深度
如何你的代码已经有问题了,应该修正你的程序。
简而言之, 个字符的缩进可以让代码更容易阅读,还有一个好处是当你的函数嵌套太深
的时候可以向你提出告警。请留意这个警告。
在 语句中消除多级缩进的首选的方式是让“(和从属于它的“(标签对
齐于同一列,而不要“两次缩进”“(标签。比如:
!!!!!!)**+,
!!!!!!--
!!!!!!--
!!!!!!!!!!../&'0
!!!!!!!!!!0
!!!!!!-1-
!!!!!!--
!!!!!!!!!!../#'0
!!!!!!!!!!0
!!!!!!-2-
!!!!!!--
!!!!!!!!!!../3'0
!!!!!!!!!!45*54
!!!!!!*
!!!!!!!!!!0
!!!!!!6
不要把多个语句放在一行里,除非你有什么东西要隐藏:
!!!!!!*)+70
!!!!!!7780
也不要在一行里放多个赋值语句。内核编码风格超级简单。就是请避免使用怪异的表达式。
除了注释、文档和 2* 之外,不要使用空格来缩进,前面的例子是例外,是有意为之。
选用一个好的编辑器,不要在行尾留空格。
!!!!!!!!!!第二章:把长的行和字符串打散
编码风格的意义就在于使用平常使用的工具来维持代码的可读性和可维护性。
每一行的长度的限制是 ' 列,我们强烈建议您遵守这个惯例。
长于 ' 列的语句要打散成有意义的片段。每个片段要明显短于原来的语句,而且放置的位
置也明显的靠右。同样的规则也适用于有很长参数列表的函数头。长字符串也要打散成较
短的字符串。唯一的例外是超过 ' 列可以大幅度提高可读性并且不会隐藏信息的情况。
8*)+
,
!!!!!!*)+
!!!!!!!!!!9)2:;7<;%=<9=
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=&9 > >=
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!= >?=+0
!!!!!!
!!!!!!!!!!70
6
!!!!!!!!!!第三章:大括号和空格的放置
语言风格中另外一个常见问题是大括号的放置。和缩进大小不同,选择或弃用某种放置
策略并没有多少技术上的原因,不过首选的方式,就像 2 和 ; 展示给我们的,
是把起始大括号放在行尾,而把结束大括号放在行首,所以:
!!!!!!*)+,
!!!!!!!!!!
!!!!!!6
这适用于所有的非函数语句块(*、、*、、)。比如:
!!!!!!)+,
!!!!!!2@AB7
!!!!!!!!!!==0
!!!!!!2@AB7;:1@C:
!!!!!!!!!!=8=0
!!!!!!2@AB7D:
!!!!!!!!!!==0
!!!!!!*
!!!!!!!!!!EE0
!!!!!!6
不过,有一种特殊情况,命名函数:它们的起始大括号放置于下一行的开头,这样:
!!!!!!*)+
!!!!!!,
!!!!!!!!!!**
!!!!!!6
全世界的异端可能会抱怨这个不一致性,呃…确实是不一致的,不过所有思维健全的人都
知道()2F; 是正确的,并且()2F; 是正确的。另外,不管怎样函数都是特殊的
(在 语言中,函数是不能嵌套的)。
注意结束大括号独自占据一行,除非它后面跟着同一个语句的剩余部分,比如说 语句中
的“(或者 * 语句中的“(,像这样:
!!!!!!,
!!!!!!!!!!*9
!!!!!!6)+0
和
!!!!!!*)//+,
!!!!!!!!!!GG
!!!!!!6*)H+,
!!!!!!!!!!GGG
!!!!!!6,
!!!!!!!!!!GGGG
!!!!!!6
理由:2F;。也请注意这种大括号的放置方式还能使空(或者差不多空的)行的数量最小
化,同时不失可读性。因此,由于你的屏幕上的新行的供应不是可回收的资源(想想 #I 行
的终端屏幕),你将会有更多的空行来放置注释。
仅有一个单独的语句时,不用加不必要的大括号。
*)+
!!!!!!)+0
这点不适用于本身为某个条件语句的一个分支的单独语句。这时应该两个分支里都使用
大括号。
*)+,
!!!!!!7)+0
!!!!!!7)+0
6,
!!!!!!)+0
6
!!!!!!!!!!3.1:空格
E 内核的空格使用方式(主要)取决于它是用于函数还是关键字。(大多数)关键字
后要加一个空格。值得注意的例外是 J*、9*、* 和7777,这些关键字在
一定程度上看起来更像函数(它们在 E 里也常常伴随小括号使用,尽管在 语言里这
样的小括号不是必需的,就像“***(声明过后的“J**()
所以在这些关键字之后放一个空格:
!!!!!!**
但是不在 J*、9*、* 或者7777这些关键字之后放空格。例如,
!!!!!!/J*)*+0
不要在小括号里的表达式两侧加空格。这是一个反例:
!!!!!!/J*)*+0
剩余15页未读,继续阅读
资源评论
greatwall_2012
- 粉丝: 3
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功