《Clean Code》标注
函数
- 函数要么做什么事,要么回答什么事,但二者不可得兼,函数应该修改某对象的状态,或是返回该对象的有关信息
- Try/catch 代码块丑陋不堪。他们搞乱了代码结构,把错误处理与正常流程混为一谈。最好把 try 和 catch 代码块的主体部分抽离出来,另外形成函数。
注释
- 别给糟糕的代码加注释 —- 重新写吧
- 用整理代码的决心替代创造废话的冲动吧。你会发现自己成为更优秀、更快乐的程序员。
格式
- 关系密切的概念应该互相靠近。显然,这条规则并不适用于分布在不同文件中的概念。除非有很好的理由,否则就不要把关系密切的概念放到不同的文件中。
- 相关函数。若某个函数调用了另外一个,就应该把它们放到一起,而且调用者应该尽可能放在被调用者上面。这样,程序就有个自然的顺序。
- 概念相关。概念相关的代码应该放到一起。相关性越强,彼此之间的距离就应该越短。
- 赋值操作的周围加上空格字符,以此达到强调目的。赋值语句有两个确定而重要的要素:左边和右边。空格字符加强了分隔效果
- 把函数调用括号中参数一一隔开,强调逗号,表示参数是互相分离的。
错误处理
- 当你打包一个第三方 API,你就降低了对它的依赖:未来你可以不太痛苦地改用其他的代码库。在你测试自己的代码时,打包也有助于模拟第三方调用。
味道与启发
- 术语“魔术数”不仅是说数字。它泛指任何不能自我描述的符号。
- 函数中的语句应该是在同一抽象层级上,该层级应该是函数名所示操作的下一层。这可能是最难理解和遵循的启发。
- 得墨忒耳律。The Pragmatic Programmers 称之为“编写害羞代码”。两者都归结为确保模块只了解其直接协作者,不了解整个系统的游览图。
- 正确的做法是让直接协作者提供所需的全部服务。不必逛遍系统的对象全图,搜寻我们要调用的方法。