改进软件度量

Improving software metrics?

本文关键字:度量 软件      更新时间:2023-10-16

我最近在C++代码库上运行了CCCC,收到了不少红色标记(链接中可以看到CCCC在代码库(而不是我的代码库)上的示例输出)。我知道红色标记可能是由于本质复杂性或偶然复杂性,但CCCC不区分两者。我最关心的是我的代码库中被称为"Henry和Kafura的信息流复杂性"的模块性度量的值,它有很多红色标记。是否有任何工作描述了减少红标记数量的工作流程建议或处方?

考虑到所涉及的类,这些红色标记是意料之中的。

stringostream都具有高扇入,但零扇出。这意味着您将数据放入字符串中,或者将数据发送到ostream。使用string的16个模块并非没有道理,使用ostream的16个也并非没有道理。

你的CDistribution模块有适度的扇入和扇出,这意味着几个模块向它发送数据,几个模块从中接收数据。这大概就是它被称为CDistributor的原因,因为它将一些东西从模块分发到其他模块,而这些模块不直接相互了解。大概这是故意的。

您可以通过取消体系结构并让模块直接相互调用来消除CDistribution的红色标记!当然,这不是一个严肃的建议。您的体系结构似乎是合理的,只有在CDistribution上有一个红色标记表明您已经将所有这些依赖关系压缩到一个定义良好的地方,这是一件好事。

至于删除stringostream的红色标记,您必须减少对这些类的依赖,但它们是基础类。想象一下全局整数+运算符上的"扇入"有多大!有些东西只是被使用了很多,这就是你所看到的。

通过改进代码来改进度量。这将是最有用和通用的方法,IMO.

你最不想做的就是通过某种过滤来掩盖指标。没有什么比谎言统计更浪费时间了。

明智地使用它们,但不要把它作为你的宗教。带有几个红色标记的


编辑如果你真的想打击"他们的危险信号",我能想到的最通用的准将:

  • 使方法小型化
  • 对参数对象中的参数进行编组

当然,这不会治愈孤立的连接模块以及其他可能出现的问题,但它肯定是中"传播"/"减少"信息复杂性的一个良好开端