我一直在思考的一件事是我们如何使用某种指标来衡量变化,我们是否会倒退?这是在我们正在改进的大型遗留代码库的背景下。大多数代码是具有 C 遗产的 C++。一些新功能和 GUI 是用 C# 编写的。
首先,我们至少可以检查代码中的简单复杂度是否随时间而变化。困难在于有一个表示——我们可以做一个 3D 表面,其中一个 2D 地图代表代码,我们有一个颜色热图表示复杂性,3D 表面凸出和凸出以显示变化。
一旦你可以生成一些数字矩阵,就会有大量的数学系统来处理这样的事情。
随着时间的推移,我希望那里有更复杂的数字,但使用相同的可视化技术来表示变化。
我喜欢Crap4j中关注复杂性与覆盖该代码的单元测试数量之间的比率的想法。
我还想包括Bob 叔叔的 SOLID 指标以及一些 Chidamber 和 Kemerer OO 指标。困难的部分是找到为 C++ 生成这些的工具。唯一的选择似乎是Krakatau Essential Metrics(我不反对为工具付费)。我使用 CK 度量的愿望部分来自于Henderson-Sellers 的《Object-Oriented Metrics:Measures of Complexity》和更早的《Object-Oriented Software Metrics 》一书。
如果我们开始使用其中一些指标,我们最终可能会得到十个左右随时间变化的数字。我对统计数据一无所知,但跟踪一堆这样的指标然后注意哪些指标往往会发生变化似乎很有趣。
请注意,一个相关问题是关于跨大型代码库测量代码质量。我对衡量变化更感兴趣。