本章主要从函数的角度讲述如何写出整洁的代码。
短小
函数应该不多余20行,函数的缩进层级不应该多于一层或者两层。这样的函数便于阅读和理解。
只做一件事
为了保证短小,保证易于理解和阅读,函数应该只做一件事,做好一件事。
每个函数一个抽象层级
为了确保函数只做一件事,函数中的语句要在同一个抽象层级上。
为了搞清楚抽象层级,我们需要明白一个概念。
自顶向下读代码-向下规则:每个函数后面都跟着位于下一个抽象层级的函数,所以我们在查看函数列表的时候,就能徇抽象层级向下阅读了,这叫做向下规格。
换种说法:程序就像是一系列TO起头的段落,每一段都描述当前抽象层级,并引用位于下一抽象层级的TO起头段落。
例子:我们想写一个函数判定字符串长度:GetStringLength(),可以在里面引用一个DetermineStringEnd()的函数判定某个位置上的字符是不是零从而确定字符串的长度。
switch函数
switch函数天生要做N件事,不过我们还是能够保证每个switch函数都埋藏在较低的抽象层级,而且永远不重复。
使用描述性的名称
函数越短小、功能越集中,越容易取好名字。
不要怕名字长。
不要怕花时间。
函数参数
函数参数越少越好,如无必要不要使用三个以上的参数函数。输出参数也是越少越好,最好使用return的方式返回参数,不要使用输出参数。
使用类包含的方法能够减少参数传递。
无副作用
不对目标以外的参数作出改动。
分隔指令与询问
函数要么做什么事,要么询问什么事,二者不可兼得。
如何写出这样的函数
1、先写出功能
2、花时间打磨
3、组装函数