演化架构与紧急设计: 积累惯用模式
2010-01-20 00:00:00 来源:WEB开发网核心提示: 图 1. ckjm 指标结果表图 2 显示相同的表,按 Weight Methods per Class(WMC)排序:图 2. ckjm 指标,演化架构与紧急设计: 积累惯用模式(3),按 WMC 排序单看这个结果,可以认为 DoubleListUIBean 类是 Struts 代码库中最复杂
图 1. ckjm 指标结果表
图 2 显示相同的表,按 Weight Methods per Class(WMC)排序:
图 2. ckjm 指标,按 WMC 排序
单看这个结果,可以认为 DoubleListUIBean 类是 Struts 代码库中最复杂的类。这意味着可以将这个类作为重构的候选目标,试着减少一些复杂性,并看看是否能发现可抽象的、重复的模式。然而,WMC 数字并不能告诉您是否值得花时间重构这个类,以改进设计。注意这个类的 Ca(传入耦合)指标,它的值为 3。这意味着只有 3 个其他的类使用这个类。花费大量的时间改进这个类的设计也许并不值得。
图 3 显示相同的 CKJM 结果,这一次按 Ca 排序:
图 3. ckjm 结果,按 Ca(传入耦合)排序
这个组合的视图表明,Struts 中最常用的类是 Component(这并不奇怪,因为 Struts 是一个 Web 框架)。虽然 Component 不如 DoubleListUIBean 复杂,但是有 177 个其他的类使用它,因此很适合作为改进设计的目标。使 Component 的设计变得更好,可以在很多其他的类上取得良好的连锁反应。
通过 图 3 所示的视图,可以逐个查看复杂度和引用次数。要发现有设计挑战的类,可以看看两个数字都比较高的组合(即被很多其他类使用的复杂的类)。我首先选择的用于研究的类是 UIBean 类,它的圈复杂度是 53,传入耦合是 22。这是一个被很多其他类使用的复杂的类,所以我将对它作进一步的研究。
更多精彩
赞助商链接