61条面向对象设计的经验原
thurJ.Riel
(1)
所有数据都应该隐藏在所在的类的内部。p13 (2)
类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15 (3)
尽量减少类的协议中的消息。p16 (4)
实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。p16 (5)
不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。p17
如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。 (6)
不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。p17 (7)
类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。p18 (8)
类应该只表示一个关键抽象。p19
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响. (9)
把相关的数据和行为集中放置。p19
设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。 (10)
把不相关的信息放在另一个类中(也即:互不沟通的行为)。p19
朝着稳定的方向进行依赖. (11)
确保你为之建模的抽象概念是类,而不只是对象扮演的角色。p23 (12)
在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。p30 (13)
在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。p30
规划一个接口而不是实现一个接口。 (14)
对公共接口中定义了大量访问方法的类多加小心。大量访问方法意味着相关数据和行为没有集中存放。p30 (15)
对包含太多互不沟通的行为的类多加小心。p31