《代码整洁之道》读书笔记(一)

a 夏天 提交于 2020-01-13 01:43:40

一、函数

1.短小

函数的第一规则是要短小,第二规则还是要短小;函数应该在20行封顶,每个函数只做一件很明确的小事,每个函数都依序将逻辑带入下一个函数;

2.只做一件事

函数应该只做一件事,做好这件事,只做这一件事;

只做一件事是保障函数短小原则的基础;那么问题来了,我们如何判断函数是否只做了一件事呢?最重要的一个判断方式就是,函数是否只是做了统一抽象层上的步骤,因为一个功能的实现一定会有较多的抽象层,而每一个抽象层都只有简单的几件事,就如同一个树结构,每一个父节点对应的子节点的数量其实都是比较少的(这里父节点相当于高层调用,它所对应的所有子节点为同一抽象层),其实也就是每一个抽象高层的下一底层都不会太多,所以我们只要能保证函数里的代码做的都是同一抽象层上的事情,就基本可以判定这个函数只做了一件事;

另一个判断方法:试着能不能将该函数再拆分出一个函数,该函数不仅仅是单纯阐述其实现;

3.每个函数一个抽象层级

正如,上文所提到的,要确保函数只做一件事,函数中的语句都要在同一抽象级别上;

自顶向下读代码:向下规则,我们希望代码拥有自顶向下的阅读顺序,我们希望每一个函数都可以进入到下一抽象层级的函数,这就是向下规则;

也就是上述“树”的思想类似,每一个函数都相当于一个节点,然而这个节点中也指向了所有的孩子节点;每个函数内封装的都是在同一级的函数节点,通过一个函数我们可以进入到其更底层的函数节点中;然后依次向下,直到达到叶子节点,最终我们希望我们的这棵树也能达到平衡结构;

4.使用描述性的名称

别害怕长名称,长而具有描述性的名称,要比短而令人费解的名称好;长而具有描述性的名称,要比描述性的长注释好;

5.函数参数

参数的数量要尽可能减少,大量的参数数量带来很多不确定性;

普遍而言,应避免使用输出参数,如果函数必须要修改某种状态,就修改所属对象的状态;

6.分隔指令查询

函数要么做什么事,要么回答什么事,但不能同时做;也即是将函数的set和get分离,将指令和询问分隔开来;

7.别重复自己

重复可能是软件中一切邪恶的根源,许多原则和实践原则都是为了控制和消除重复而创建,如面向对象编程将代码集中到基类,从而避免了冗余;自子程序发明以来,软件开发领域的所有创新都是在不断尝试从源代码中消灭重复;

8.小结

每个系统都是使用某种领域特定语言搭建的,而这种语言是程序员设计来描述那个系统的;

编程艺术是且一直是语言设计的艺术,大师级程序员把系统当作故事来讲,而不是当做程序来写;他们用选定编程语言提供的工具构建一种更为丰富且更具表达力的语言,用来讲这个故事;那种领域特定语言中的一个部分,就是描述在系统中发生的各种行为的函数层级。在一种狡猾的recursvie operation中,这些行为使用它们定义的与领域紧密相关的语言讲述自己的那个小故事;我们真正的目标在于讲述系统的故事,而你编写的函数必须干净利落地拼装到一起,形成一种精确而清晰的语言,帮助你将故事;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!