一、写函数的时候遵循
-
实现一个函数只是为了做好一件事情,不要把函数设计成用途广泛、面面俱到的,这样的函数肯定会超长,而且往往不可重用,维护困难。
-
函数内部的缩进层次不宜过多,一般以少于4层为宜。如果缩进层次太多就说明设计得太复杂了,应考虑分割成更小的函数(Helper Function)来调用。
-
函数不要写得太长,建议在24行的标准终端上不超过两屏,太长会造成阅读困难,如果一个函数超过两屏就应该考虑分割函数了。[CodingStyle]中特别说明,如果一个函数在概念上是简单的,只是长度很长,这倒没关系。例如函数由一个大的
switch
组成,其中有非常多的case
,这是可以的,因为各case
分支互不影响,整个函数的复杂度只等于其中一个case
的复杂度,这种情况很常见,例如TCP协议的状态机实现。 -
执行函数就是执行一个动作,函数名通常应包含动词,例如
get_current
、radix_tree_insert
。 -
比较重要的函数定义上侧必须加注释,说明此函数的功能、参数、返回值、错误码等。
-
另一种度量函数复杂度的办法是看有多少个局部变量,5到10个局部变量已经很多了,再多就很难维护了,应该考虑分割成多个函数。
二、indent -kr -i8 main.c
-kr选项表示K&R风格,-i8
表示缩进8个空格的长度。如果没有指定-nut
选项,则每8个缩进空格会自动用一个Tab代替。注意indent
命令会直接修改原文件,而不是打印到屏幕上或者输出到另一个文件,