每个函数都应该设计得尽可能简单,简单的函数才容易维护。应遵循以下原则:
实现一个函数只是为了做好一件事情,不要把函数设计成用途广泛、面面俱到的,这样的函数肯定会超长,而且往往不可重用,维护困难。
函数内部的缩进层次不宜过多,一般以少于4层为宜。如果缩进层次太多就说明设计得太复杂了,应该考虑分割成更小的函数来调用(这称为Helper Function)。
函数不要写得太长,建议在24行的标准终端上不超过两屏,太长会造成阅读困难,如果一个函数超过两屏就应该考虑分割函数了。[CodingStyle]中特别说明,如果一个函数在概念上是简单的,只是长度很长,这倒没关系。例如函数由一个大的switch
组成,其中有非常多的case
,这是可以的,因为各个case
之间互不影响,整个函数的复杂度只等于其中一个case
的复杂度,这种情况很常见,例如TCP协议的状态机实现。
执行函数就是执行一个动作,函数名通常应包含动词,例如get_current
、radix_tree_insert
。
比较重要的函数定义上面必须加注释,说此函数的功能、参数、返回值、错误码等。
另一种度量函数复杂度的办法是看有多少个局部变量,5到10个局部变量就已经很多了,局部变量再多就很难维护了,应该考虑分割函数。