本文最后更新于 857 天前,其中的信息可能已经有所发展或是发生改变。
注释
什么也不会比陈旧,提供错误信息的注释更有破坏性。
若编程语言有足够的表达力,就根本不需要注释。
注释的恰当用法时弥补我们在用代码表达意图时遭遇的失败。
如果你发现自己需要写注释,就再想想看是否有方法翻盘。
个人认为注释还是要写,算是对代码的中文翻译,因为我们的英语水平,命名习惯各不相同。
注释掉的代码
其他人不敢删除注释掉的代码。他们会想,代码依然放在哪儿,一定有其原因,而且这段代码很重要,不能删除。
格式
垂直格式
类文件不应太庞大,适当拆分类,防止臃肿。
向报纸学习
从上往下阅读,先看到主题,再看到详细的描述。
概念间垂直方向上的区隔
使用空白行来间隔代码,标识出新的概念,读者的目光总是会停留于空白行之后的哪一行。
垂直方向上的靠近
成员变量不应用空白行隔开,这样才达到一览无余的效果。
垂直距离
变量声明应尽可能靠近其使用位置,局部变量应放在函数头部。
若某个函数调用了另一个函数,应该将被调用的函数放到下一个函数的位置。增强可读性。
概念相关的代码应该放在一起。
对象和数据结构
getter和setter,相当于将私有变量公之于众。
数据抽象
依赖倒置原则。
隐藏实现并非只是在变量之间放上一个函数层那么简单。隐藏实现关乎抽象!类并不简单地用取值器和赋值器将其变量推向外界,而是暴露抽象接口,以便用户无需了解数据的实现就能操作数据本体。
数据、对象的反对称性
过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数;面向对象代码便于在不改动既有函数的前提下添加新类。
反之亦然
过程式代码难以添加新数据结构,因为必须修改所有函数;面向对象代码难以添加新函数,因为必须修改所有类。
得墨忒耳率
函数只能调用本类的函数、本类属性的函数、方法参数对象的函数。
混杂
避免在实体类里写业务代码。
数据传输对象
即DTO。