快速业务通道

演化架构与紧急设计: 通过指标进行紧急设计 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

通过观察这个结果可以发现,DoubleListUIBean 是 Struts 代码库中最复杂的类。这说明应该考虑对它进行重构,消除一定的复杂性,寻找可提取出的重复的模式。但是,WMC 值不能指出花时间重构这个类是否值得。注意,这个类的 Ca 是 3。只有 3 个其他类使用这个类,这说明不值得花费大量时间改进这个类的设计。

图 3 显示按 Ca 排序的 ckjm 结果:

图 3. 按传入耦合排序的 ckjm 结果

这个组合视图表明,Struts 中最常用的类是 Component(由于 Struts 是 Web 框架,这是很正常的)。尽管 Component 并不复杂,但是有 177 个类使用它,所以它是改进设计的好目标。改进 Component 的设计会影响其他许多类。

WMC 和 Ca 的组合是了解 图 3 提供的信息的最佳方法。这在一个视图中同时指出代码库中最重要和最复杂的部分。即使您以前并不了解这个代码库,也可以通过这个视图了解在哪些方面进行改进会产生最好的结果。尽管这不一定准确,但是与只查看代码相比现在掌握了关于代码库的更多信息。

数字指标提供关于代码的信息,但是它们处于相当低的层次上;它们提供特定类的信息,而不提供代码库的全局视图。现在,有许多工具可以通过可视化把指标提高到下一个层次。

指标可视化

指标的可视化为特定的维提供替代视图,包括单一维和多个维的聚合。Smalltalk 社区开发了许多指标可视化工具。Smalltalk 开发的许多指标技术已经迁移到了 Java 语言。

iPlasma 和行业标准

与圈复杂度相关的常见问题包括 “我的代码与别人的代码相比怎么样?” 和 “对于一个类,多大的数值是合适的?” iPlasma 项目能够回答这些问题。iPlasma 是一个用于面向对象设计的质量评估的平台,是罗马尼亚的一个大学项目。它为项目生成许多重要的指标,并与行业标准范围进行比较。

在运行 iPlasma 时,指定一个源代码目录,它就会生成一个指标金字塔,见 图 4(这是 Struts 2.0.11 代码库的结果):

图 4. iPlasma 指标金字塔

演化架构与紧急设计: 通过指标进行紧急设计(3)

时间:2011-07-13 IBM Neal Ford

这个金字塔包含大量信息,您要学会如何理解它。每行包含一个彩色的百分数;这个百分数是这一行上的数字和下一行上的数字的比值。表 1 按从上到下的次序说明数字的含义:

表 1. iPlasma 金字塔的含义

编码 说明
NDD 直接后代的数量
HIT 继承树的高度
NOP 包的数量
NOC 类的数量
NOM 方法的数量
LOC 代码行数
CYCLO 圈复杂度
CALL 每个方法的调用数
FOUT 分散调用(给定的方法调用的其他方法数量)

数字表示比值;颜色表示比值是否在行业标准范围内(行业标准范围来自大量开放源码项目)。比值是绿色(处于范围内)、蓝色(低于范围)或红色(在范围之外)的。对于 Struts 代码库,NDD 和 CYCLO 的值处于行业标准范围之外,LOC 和 NOM 低于标准范围。表 2 列出使用的范围:

表 2. iPlasma 的行业指标范围

  中等
CYCLO / 行 0.16 0.20 0.24
LOC / 方法 7 10 13
NOM / 类 4 7 10
NOC / 包 6 17 26
CALLS / 方法 2.01 2.62 3.20
FANOUT / 调用 0.56 0.62 0.68

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号