Board logo

标题: 深入学习Linux系统及内核编程风格 [打印本页]

作者: yuyang911220    时间: 2017-2-24 10:30     标题: 深入学习Linux系统及内核编程风格

这篇文档用于描述linux内核编程中推荐的编程风格。编程风格是很个人化的东西,我不想把我的观点_强加_给任何人,但这是我必须维护的代码中所遵守的,我也建议其他部分的代码也能遵守它。请至少给这里的观点一些考虑。
  首先,我建议你打印一份GNU代码风格,不是去读它,而是把它烧了,这是个很不错的姿态。
  下面就是Linux内核编程风格:
  第一章:缩进
  制表符(tabs)占8个字符,所以缩进也是8个字符。有些异端运动想使用4个字符(甚至是2个字符)的缩进,这和把PI(圆周率)定为3没什么两样。
  原因:缩进的根本目的是用来清晰地标识一个控制块的起始。特别是当你连续盯着屏幕看了20 个小时后,你就会体会到更长的缩进的好处了。
  现在,有些人提出8字符缩进会使得代码太偏向右边,当使用80字符的终端时很难阅读。答案是如果你需要三层以上的缩进,那么你已经完蛋了,应该改改你的程序了。
  简而言之,8字符缩进使得阅读代码更为容易,并且在你的缩进层次过深时提出警告。应该留心这样的警告。关于这一点,我不能苟同,4个字符的缩进确实有它的好处,缩进太多反而看着累。而且有时候仅仅两层嵌套就会使代码很长。
  第二章:括号的位置
  括号位置的问题在C编程风格中经常被提出。和缩进大小不同,括号位置的选择并没有太多技术上的原因,而更多的是个人的喜好。比如Kernighan和Ritchie的弟子们把左括号放在一行的最后,把右括号放在一行的开始,象这样:
CODE:
 if (x is true) {
  we do y
  }
  但是,函数是一种特殊的情况,函数的左括号放在下一行的开始,象这样:
CODE:
int function(int x)
  {
  body of function
  }
  全世界的异端人士指出这种不一致的做法 ...嗯... 不太一致,但是所有思维正确的人知道 (a) K&R是_对_的 (b) K&R是对的。而且,函数确实是特殊的(你在C中无法对函数进行嵌套)。
  注意到右括号完全占有单独的一行,_除非_当它后面还有未完成的语句,比如do语句中的“while”或者if语句中的“else”,想这样:
CODE:
do {
  body of do-loop
  } while (condition);
  和
CODE:
if (x == y) {
  ..
  } else if (x > y) {
  ...
  } else {
  ....
  }
  还有,注意到这种括号的布局方法还减少了空行(或者说是几乎是空行)的数目,而且没有减小可读性。因为你屏幕上的空行是不可回收资源(这里想一下25行的终端屏幕),这样你会有更多的空行用于加注释。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0