高内聚、低耦合在包的设计中如何实现。本文从内聚性和稳定性两个方面分别提出3条原则。 一、内聚性 1.重用发布等价原则 重用的粒度就是发布的粒度。 该原则可以用来判断哪些类应该放到一个包里。 2.共同重用原则 一个包中的类应该是共同重用的。 该原则可以用来判断哪些类不应该放到一个包里。 没有紧密联系的类不应该放在一个包里 3.共同封闭原则 一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对其他包不造成影响。 一个包不应该包含多个引起变化的原因。
二、稳定性 4.无环依赖原则 包的依赖关系图中不允许存在环。 它应当是一个有向无环图。 环形依赖在几个人的项目组里影响不大,但是在大型项目中会导致每个人都忙于一遍遍的更改他们的代码使之相容与其他的最近更改。 5.稳定依赖原则 朝着稳定的方向进行依赖。 一个包的I度量应该大于它所依赖的的包的I度量,即应该依赖更稳定的包。 不稳定性度量: I=Ce/(Ca+Ce) I 不稳定性 Ca 输入耦合度 外部类依赖该包的数目,每多一个就多一个不修改该类的理由增加一份“责任”也就越难修改和稳定。 Ce 输出耦合度 包内部类依赖于外部类的数目
6.稳定抽象原则 包的抽象程度应该和其稳定程度一致,一个稳定的包应当是抽象的,这样它的稳定性就不会使其无法扩展。 抽象性度量: A=Na/Ac A 抽象性 Na 抽象类数 Nc 总类数
一种参考的标准,依赖性管理度量 以A为纵轴,I为横轴的坐标图主序列: 连接(1,0)和(0,1)的线 到主序列的规范化距离 D = | A + I - 1 | 使用D值来分析一个包的设计和主序列间的一致性。
理想的包的D值应当在主序列附近,当包的D值超出一定范围时就值得我们找出这个包远离主序列的原因。