我最近安装了Eclipse Metrics Plugin,并为我们的一个项目导出了数据。
拥有这些漂亮的图表非常好,但我真的想深入了解它们的意思。指标的定义只是告诉你它的真正含义。
有没有人知道任何好的资源,书籍,网站等,可以帮助我更好地理解所有数据的含义,并了解如何在必要时改进代码?
我对Efferent Coupling和Cyclomatic Complexity等感兴趣,而不是每行方法的代码行或行。
答案 0 :(得分:4)
我认为代码指标(有时称为software metrics)不会提供有关您可以改进的地方的重要数据。
使用代码指标,很高兴看到您在一小时内编写了多少代码等,但除此之外,他们还会告诉您有关所编写代码的质量,文档和代码覆盖率的信息。他们几乎是一周的时间来衡量你无法衡量的地方。
代码指标还会区分解决更难问题的程序员,因为他们显然设法编写更少的代码。然而,他们解决了难题,而一名初级程序员正在掏出大量废话代码看起来不错。
使用指标的另一个例子是非常受欢迎的Ohloh。他们使用指标在开源项目上设置价格标签(使用行数等),这本身就是一种有缺陷的尝试 - 正如您所想象的那样。
说完所有维基百科条目提供了一些关于这个主题的整体见解,遗憾的是没有用一个非常好的网站或书籍以更加支持的方式回答你的问题,但我敢打赌你得到的漂移我不是一个巨大的风扇。 :)
用于帮助您改进的东西将是持续集成,并在代码,文档等方面遵守某种标准。这就是你可以改进的方式。度量标准只是会议的眼睛 - “看起来我们编码已经很多了。”
<强>更新强>
好吧,我的观点是传出耦合甚至是圈复杂度都可能表明出现了问题 - 但它并不一定是错的。它可以作为重构类的指标,但没有经验法则可以告诉你什么时候。
恕我直言,诸如500多行代码,重构或DRY principal之类的规则在大多数情况下更适用。有时它就这么简单。
我给你的很多,因为将圈复杂度绘制成流程图,它可以让人大开眼界。但请再次谨慎使用。
答案 1 :(得分:1)
在我看来,指标是在代码库中找到痛点的绝佳方法。它们对于向经理展示为什么要花时间改进它也非常有用。
这是我写的关于它的帖子:http://blog.jorgef.net/2011/12/metrics-in-brownfield-applications.html
我希望它有所帮助