良好的编程习惯

一代码风格

1、关键字ifwhilefor与其后的控制表达式的(括号之间插入一个空格分隔,但括号内的表达式

应紧贴括号。

2、双目运算符的两侧各插入一个空格分隔,单目运算符和操作数之间不加空格。

3、后缀运算符和操作数之间也不加空格,例如取结构体成员s.a、函数调用foo(arg1)、取数组成

a[i]

4,号和;号之后要加空格,这是英文的书写习惯。

5、以上关于双目运算符和后缀运算符的规则并没有严格要求,有时候为了突出优先级也可以写得

更紧凑一些,例如for (i=1; i<10; i++) distance = sqrt(x*x + y*y)等。但是省略的空格

一定不要误导了读代码的人,例如a||b && c 很容易让人理解成错误的优先级。

6、由于UNIX系统标准的字符终端是2480列的,接近或大于80个字符的较长语句要折行写,

行后用空格和上面的表达式或参数对齐。

7、较长的字符串可以断成多个字符串然后分行书写。

8、有的人喜欢在变量定义语句中用Tab字符,使变量名对齐,这样看起来很美观。

二注释使用

1、整个源文件的顶部注释。说明此模块的相关信息,例如文件名、作者和版本历史等,顶头写不

缩进。

2、函数注释。说明此函数的功能、参数、返回值、错误码等,写在函数定义上侧,和此函数定义

之间不留空行,顶头写不缩进。

3、相对独立的语句组注释。对这一组语句做特别说明,写在语句组上侧,和此语句组之间不留空

,与当前语句组的缩进一致。

4、代码行右侧的简短注释。对当前代码行做特别说明,一般为单行注释,和代码之间至少用一个

空格隔开,一个源文件中所有的右侧注释最好能上下对齐。

5、复杂的结构体定义比函数更需要注释。

6、复杂的宏定义和变量声明也需要注释。

三标识符命名

1.标识符命名要清晰明了,可以使用完整的单词和易于理解的缩写。

2.内核编码风格规定变量、函数和类型采用全小写加下划线的方式命名,常量(比如宏定义和

枚举常量)采用全大写加下划线的方式命名,比如上一节举例的函数名radix_tree_insert

类型名struct radix_tree_root、常量名RADIX_TREE_MAP_SHIFT等。

3.全局变量和全局函数的命名一定要详细,不惜多用几个单词多写几个下划线。

4.禁止用汉语拼音做标识符,可读性极差。

四函数结构

1.实现一个函数只是为了做好一件事情,不要把函数设计成用途广泛、面面俱到的,这样的函

数肯定会超长,而且往往不可重用,维护困难。

2.函数内部的缩进层次不宜过多,一般以少于4层为宜。如果缩进层次太多就说明设计得太复杂

,应考虑分割成更小的函数(HelperFunction)来调用。

3.函数不要写得太长,建议在24行的标准终端上不超过两屏,太长会造成阅读困难,如果一个

函数超过两屏就应该考虑分割函数了。[CodingStyle]中特别说明,如果一个函数在概念上是

简单的,只是长度很长,这倒没关系。例如函数由一个大的switch组成,其中有非常多

case ,这是可以的,因为各case分支互不影响,整个函数的复杂度只等于其中一个case

复杂度,这种情况很常见,例如TCP协议的状态机实现。

4.执行函数就是执行一个动作,函数名通常应包含动词,

get_currentradix_tree_insert

5.比较重要的函数定义上侧必须加注释,说明此函数的功能、参数、返回值、错误码等。

6.另一种度量函数复杂度的办法是看有多少个局部变量,510个局部变量已经很多了,再多就

很难维护了,应该考虑分割成多个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值