OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4205|回复: 3

【分享-信盈达】Linux内核编码风格!

[复制链接]

13

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-10-7
在线时间
1 小时
发表于 2014-7-1 17:31:00 | 显示全部楼层 |阅读模式

这是一份简短的,描述linux内核首选编码风格的文档。编码风格是很个人化的东西,而且我也不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望绝大多数其他代码也能遵守这个风格。所以请至少考虑一下本文所述的观点。

 

首先,我建议你打印一份GNU的编码规范,然后不要读它。烧掉它,这是一个很高调的具有象征意义的姿态。

 

Anyway, here goes:

 

                第一章:缩进

 

制表符是8个字符,所以缩进也是8个字符。有些异端运动试图将缩进变为4(乃至2)个字符深,这跟尝试着将圆周率PI的值定义为3没什么两样。

理由:缩进的全部意义就在于清楚的定义一个控制块起止于何处。尤其是当你盯着你的屏幕连续看了20小时之后,你将会发现大一点的缩进将会使你更容易分辨缩进。

 

现在,有些人会抱怨8个字符的缩进会使代码向右边移动的太远,在80个字符的终端屏幕上就很难读这样的代码。这个问题的答案是,如果你需要3级以上的缩进,不管缩进深度如何你的代码已经有问题了,应该修正你的程序。

 

简而言之,8个字符的缩进可以让代码更容易阅读,还有一个好处是当你的函数嵌套太深的时候可以向你提出告警。请留意这个警告。

 

switch语句中消除多级缩进的首选的方式是让“switch”和从属于它的“case”标签对齐于同一列,而不要“两次缩进”“case”标签。比如:

 

        switch (suffix) {

        case 'G':

        case 'g':

                mem <<= 30;

                break;

        case 'M':

        case 'm':

                mem <<= 20;

                break;

        case 'K':

        case 'k':

                mem <<= 10;

                /* fall through */

        default:

                break;

        }

 

 

不要把多个语句放在一行里,除非你有什么东西要隐藏:

 

        if (condition) do_this;

          do_something_everytime;

 

也不要在一行里放多个赋值语句。内核编码风格超级简单。就是请避免使用怪异的表达式。除了注释、文档和Kconfig之外,不要使用空格来缩进,前面的例子是例外,是有意为之。

 

选用一个好的编辑器,不要在行尾留空格。

 

 

                第二章:把长的行和字符串打散

 

编码风格的意义就在于使用平常使用的工具来维持代码的可读性和可维护性。

每一行的长度的限制是80列,我们强烈建议您遵守这个惯例。

长于80列的语句要打散成有意义的片段。每个片段要明显短于原来的语句,而且放置的位置也明显的靠右。同样的规则也适用于有很长参数列表的函数头。长字符串也要打散成较短的字符串。唯一的例外是超过80列可以大幅度提高可读性并且不会隐藏信息的情况。

 

void fun(int a, int b, int c)

{

        if (condition)

                printk(KERN_WARNING "Warning this is a long printk with "

                                                "3 parameters a: %u b: %u "

                                                "c: %u \n", a, b, c);

        else

                next_statement;

}

嵌入式解决方案提供 嵌入式人才实训
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-7-1 19:21:39 | 显示全部楼层
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-7-2 17:27:54 | 显示全部楼层
不敢苟同,但语言挺搞笑的。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2612
金钱
2612
注册时间
2011-1-25
在线时间
176 小时
发表于 2014-7-2 19:27:16 | 显示全部楼层
感谢分享。。。。。。
一直努力就很好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 10:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表