Posts Tagged ‘codingstyle’

LK’s CodingStyle Notes(4-6)

星期四, 7月 24th, 2008

 
Chapter 4: Naming 命名
 
重申一下,c是异常强大的语言(膜拜orz…),所以请对你的命名原则负责了,别像Modula-2 和 Pascal 程序员那样把变量变得太可爱了,像这样“ThisVariableIsATemporaryCounter”的名字,最好还是杜绝长字符命名了吧。事实上,在C程序员的习惯上,完全是可以写成“tmp”就好了。写成这样的目的是读写方便,不会晦涩难懂,毕竟谁都知道tmp就是Temporary的简写来着。
无论如何,混乱的命名都会让你皱眉头的,所以,在全局命名的问题上,必须加上适当的描述。

例如你有一个函式是"计算活跃用户数目",就可以写成这样:count_active_users(),别写成了cntusr()。
对在函式上加上类型描述是非常损害脑部的(类似匈牙利命名法…我以前还挺推崇的,这是Microsoft的官方指定命名规则~~),作者说这种命名法只会让人们感到混乱。他老人家还说,No wonder MicroSoft makes buggy programs.

局部变量的命名,必须短小精悍,把握重点。例如,如果你有一个整形变量的计数器,那么你只要把它命名为“i”就可以了。其实在局部变量中,没有必要写的过于复杂,如果对于上下文没有阅读障碍的话,把它叫做“loop_counter”是没有建设性的。

ps 如果你担心你把这些变量给弄混了,那就有另一个麻烦了,这就是“函数生长激素不均综合征”(function-growth-hormone-imbalance)…

(more…)

LK’s CodingStyle Notes(1-3)

星期四, 7月 24th, 2008

在参看Linux的CodingStyle(位于Linux内核的Documentation\CodingStyle文件)的过程中,这是一个非常完美的编码规范.
小小笔记一下。

Chapter 1: Indentation 排版

1) 对于Tab占位的大小问题有很多的纷争,有些人趋向于8个空格等于1个tab,有些人则喜欢使用4个空格(我就是如此)。不过不管那种排版方式,都是为了让代码更加清晰而设定的。
例如:
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;
虽然对于比较短的语句来说这很方便,不过对于内核这种异常简洁的风格不要使用这种狡猾的技巧( Kernel coding style is super simple.  Avoid tricky expressions.),因为这对于代码没有优化,还对阅读产生了一定的影响。
作为一个得体的编码人员,在每个语句后面都得留下空行,方便分段的阅读。
(more…)