3.1短小
函数第一规则是要短小,第二条规则是更短小。
程序中每个函数都只有两行、三行或四行长。每个函数都一目了然。每个函数都只说一件事。而且,每个函数都依序把你带到下一个函数。这就是函数应该达到的短小程度!
代码块和缩进:if语句、else语句、while语句等,其中的代码块应该只有一行。
3.2只做一件事
函数应该做一件事。做好这件事。只做这一件事。
3.3每个函数一个抽象层级
要想让函数做一件事,函数的语句都要在同一抽象层级上。
自顶向下读代码:向下规则
我们想要让代码拥有自顶向下的阅读顺序。'我们想要让每个函数后面都跟着位于下一抽象层级的函数,这样一来,在查看函数列表时,就能循抽象层级向下阅读了。我把这叫做向下规则。
3.4switch语句
对于switch语旬,我的规矩是如果只出现一次,用于创建多态对象,而且隐藏在某个继承关系中,在系统其他部分看不到,就还能容忍。当然也要就事论事,有时我也会部分或全部违反这条规矩。
3.5使用描述性的名称
如果每个例程都让你感到深合己意,那就是整洁代码。
大半工作都在于为只做一件事的小函数取个好名字。函数越短小、功能越集中,就越便于取个好名字。
3.6函数参数
最理想的参数数量是零(零参数函数),其次是一(单参数函数),再次是二(双参数函数),应尽量避免三(三参数函数)。有足够特殊的理由才能用三个以上参数〈多参数函数)-——所以无论如何也不要这么做。
3.7无副作用
普遍而言,应避免使用输出参数。如果函数必须要修改某种状态,就修改所属对象的状态吧。
3.8分割指令与询问
函数要么做什么事,要么回答什么事,但二者不可得兼。函数应该修改某对象的状态,或是返回该对象的有关信息。两样都干常会导致混乱。
3.9使用异常替代返回错误码
3.10别重复自己
3.11结构化编程
3.12如何写出这样的函数