高内聚中的LCOM4指标衡量

经常说的软件“低耦合,高内聚”,哪么如何衡量高内聚呢?其实原来在sonar qube中有一个指标叫LCOM4,用来衡量。

一个类是否有高内聚性,可以使用LCOM4来度量。LCOM4用来说明class内部方法和变量之间的关系, 值越大, 说明内聚性越差. 一般情况下 LCOM4=1是内聚性最佳的. LCOM4=2说明可以拆成两个类, 以此类推。如何判断两个方法是否有关系了?举个例子:我们有一个类,类中有两个方法A和B,如果满足下面一个条件,我们就认为这两个方法有联系:

1)他们都调用了同一个类级别的变量。

2)方法A调用了方法B,或者方法B调用了方法A。

官网的一个图片来解释
[img]http://shellblog.sinaapp.com/upload/pm-oo-lcom4.gif[/img]

上面的图中,有两个类,他们都是由两个类级别的变量x,y和5个方法(A,B,C,D,E)组成的。左边的图中方法A调用了方法B,方法B存取了实例变量x,方法C和方法D存取了变量y,方法D又调用了方法E。方法A,B以及实例变量x和方法C,D,E没有任何关系,所以缺乏凝聚度量为2,建议拆分为两个类。右边的图就不多做解释了,所有的方法之间紧密联系,内聚度很高
Sonar2.0带来了实验性且有前途的度量:用LCOM4 (缺乏内聚性的方法)来衡量类的内聚性。解释这个度量是非常简单的,值1表示这个类只有一个职责(好),值X代码这个类有X个职责(差),值X得类应该重构/分割。
当进入Sonar,事情仍然非常简单。在项目面板的第一个窗口小部件就可以快速的查看:
[img]http://sonar.codehaus.org/wp-content/uploads/2010/03/sonar_lcom4_widget.png [/img]

[img]http://sonar.codehaus.org/wp-content/uploads/2010/03/lcom4_details_viewer.png[/img]

参考文档:

1) http://www.aivosto.com/project/help/pm-oo-cohesion.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值