ChatGPT 最近大受欢迎。作为一个在代码质量领域拥有多年经验的团队,我们决定用 ChatGPT 做个实验:让它创造一个新的软件度量。在提交查询之前,我们怀疑能否得到有用的结果——或者能否得到任何结果。我们担心回答可能会是这样的:
"创造一个新的软件度量需要在真实项目中进行大量测试,以证明它作为改进代码质量指标的可靠性。"
然而,令我们惊讶的是,我们真的收到了一个度量 :)

但这个度量真的是可维护性的可靠指标吗?
让我们分析一下这个公式:低圈复杂度 + 高内聚度
这个公式背后的推理如下:
- 可维护性取决于方法的复杂度。
- 可维护性还取决于类型的内聚度。
- 圈复杂度和内聚度之间没有直接的相关性,这就是为什么我们在公式中使用了 + 运算符。
- 为了获得可靠的结果,最好使用一个考虑代码规模的比率。
乍一看,这个公式似乎很有前景。然而,在真实项目中,这个公式存在一个重大问题,尤其是关于这一论断:
"圈复杂度和内聚度之间没有直接的相关性。"
在这种情况下,我们需要检查这两个度量是密切相关,还是一个度量始终超过另一个。如果一个度量持续压倒另一个,可能会使组合度量变得无关紧要。在我们的例子中,低复杂度度量可能远高于内聚度度量,从而掩盖了后者,使整体度量的意义大打折扣。
为了改进这个度量,我们可以引入自然对数、乘法、除法或其他数学函数等额外的运算符来完善公式,获得更可靠的结果,就像可维护性指数(Maintainability Index)所做的那样:
可维护性指数 = 171 – 5.2 * ln(Halstead 体积) – 0.23 * (圈复杂度) – 16.2 * ln(代码行数)
我们如何完善软件度量公式?
这其中没有什么魔法;它需要在真实项目中进行大量测试,并在数月甚至数年的时间里使用这些度量,才能找出能产生可靠度量的因子或运算符。
结论
必须记住,ChatGPT 以及 AI 总体上是宝贵的工具,但它们不会很快取代人类的专业知识。人类的验证和监督在所有领域都至关重要。所以别担心:AI 不会抢走您的工作——它会帮助您把工作做得更好。
