作者:Meilir Page-jones
1. 面向对象软件的可理解性和可维护性,以及其它一些特性都是以封装性和Connanscence为基础的
2. 包:里面的类来自同一领域,但它们未必相互发生影响;组件:里面的类相互作用完成一系列业务逻辑 (启示:平时应该注意把内聚、耦合这种理念扩展到对象之外,扩展到包、组件或者更高的级别)
3.高内聚/低耦合并不是oo的专利,在结构化时代就已有比较系统化的研究;这方面可以看作者的另一本经典书籍:’practical guide to structured systems design’,它里面提出的一些东西在OO时代照样有用.
4. Encumbrance: 一个类的encumbrance就是它直接引用和间接引用的所有类的数量。 越低层次的类,它的encumbrance就应该越小; 越高层次的类,它的encumbrance就应该越大。
5.一些错误的内聚:
a.混合事例型内聚:比如在“几何图形”这个类里搞一个“对角线”属生就是这种不当内聚,因为虽然四边形有对角线,但三角形并没有对角线。
b.混合领域型内聚:比如在“实数”这个类里写一个“华氏温度转摄氏温度”的方法,这样做会从扩大一个类的encumbrance,引入不相关的领域,导致可重用性降低
c.混合角色型内聚:比如在“人”这个类里写一个“拥有狗的数目”的方法。人和狗可能都属于业务领域,但人和狗完全是不同的角色。