跳转到内容

4. 函数

每个函数都应该设计得尽可能简单,简单的函数才容易维护。应遵循以下原则:

  1. 实现一个函数只是为了做好一件事情,不要把函数设计成用途广泛、面面俱到的,这样的函数肯定会超长,而且往往不可重用,维护困难。

  2. 函数内部的缩进层次不宜过多,一般以少于 4 层为宜。如果缩进层次太多就说明设计得太复杂了,应考虑分割成更小的函数(Helper Function)来调用。

  3. 函数不要写得太长,建议在 24 行的标准终端上不超过两屏,太长会造成阅读困难,如果一个函数超过两屏就应该考虑分割函数了。CodingStyle 中特别说明,如果一个函数在概念上是简单的,只是长度很长,这倒没关系。例如函数由一个大的 switch 组成,其中有非常多的 case ,这是可以的,因为各 case 分支互不影响,整个函数的复杂度只等于其中一个 case 的复杂度,这种情况很常见,例如 TCP 协议的状态机实现。

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

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

  6. 另一种度量函数复杂度的办法是看有多少个局部变量,5 到 10 个局部变量已经很多了,再多就很难维护了,应该考虑分割成多个函数。