改进软件度量
Improving software metrics?
我最近在C++代码库上运行了CCCC,收到了不少红色标记(链接中可以看到CCCC在代码库(而不是我的代码库)上的示例输出)。我知道红色标记可能是由于本质复杂性或偶然复杂性,但CCCC不区分两者。我最关心的是我的代码库中被称为"Henry和Kafura的信息流复杂性"的模块性度量的值,它有很多红色标记。是否有任何工作描述了减少红标记数量的工作流程建议或处方?
考虑到所涉及的类,这些红色标记是意料之中的。
string
和ostream
都具有高扇入,但零扇出。这意味着您将数据放入字符串中,或者将数据发送到ostream。使用string
的16个模块并非没有道理,使用ostream
的16个也并非没有道理。
你的CDistribution模块有适度的扇入和扇出,这意味着几个模块向它发送数据,几个模块从中接收数据。这大概就是它被称为CDistributor的原因,因为它将一些东西从模块分发到其他模块,而这些模块不直接相互了解。大概这是故意的。
您可以通过取消体系结构并让模块直接相互调用来消除CDistribution的红色标记!当然,这不是一个严肃的建议。您的体系结构似乎是合理的,只有在CDistribution上有一个红色标记表明您已经将所有这些依赖关系压缩到一个定义良好的地方,这是一件好事。
至于删除string
和ostream
的红色标记,您必须减少对这些类的依赖,但它们是基础类。想象一下全局整数+
运算符上的"扇入"有多大!有些东西只是被使用了很多,这就是你所看到的。
通过改进代码来改进度量。这将是最有用和通用的方法,IMO.
你最不想做的就是通过某种过滤来掩盖指标。没有什么比谎言统计更浪费时间了。
明智地使用它们,但不要把它作为你的宗教。带有几个红色标记的
编辑如果你真的想打击"他们的危险信号",我能想到的最通用的准将:
- 使方法小型化
- 对参数对象中的参数进行编组
当然,这不会治愈孤立的连接模块以及其他可能出现的问题,但它肯定是中"传播"/"减少"信息复杂性的一个良好开端
- 用于在并发环境中访问 MMIO 的软件模式
- 有没有办法实现 fmu 导出到基于 c++ 的仿真软件以使用 fmi?
- 从C++调用 Python 并访问通过 Anaconda 安装的软件包
- 有关图像处理应用程序的硬件和软件安全性的建议
- 通过自制软件(macOS)安装的clang++:编译错误
- 如何在软件代码中使用ofstream创建文件
- 如何在Linux上正确发布C++软件(游戏)
- 尝试使用 RTool 在 R4.0 上安装软件包时出现编译错误
- Visual Studio Code输出被检测为恶意软件?
- 如何使用自制软件,cMake和cLion将库添加到C++项目中
- 我正在尝试编写将 ASCII 转换为十进制、添加并转换回 ASCII 的软件
- 在 C/C++ 中,是否可以通过使用指针更改"important"内存地址的值来创建简单的恶意软件?
- 用于GPU上的瓦片度量和调度的Halide
- 使用策略模式设计软件时出现的问题
- 为什么 Avira 认为"CoCreateInstance()"是恶意软件?
- 在陈述"Implementation-defined"时,什么样的软件是"Implementation"的一部分?究竟什么是"Implementation"?
- 如何导入使用自制软件安装的 GMP?
- 在 Linux 上分发软件时的库依赖关系?
- 在RHEL6上使用最近的gcc进行编译:如何分发软件?
- 改进软件度量