9.3 为什么要度量代码质量
“我不能为代码质量而索价。”这是我问我的朋友关于这个问题的想法时,他的原话。他的意思是,代码质量主要是对程序员有利,而对客户来说是一种无形的税收。我能理解他的观点;我有几次经验,其中一个潜在客户将目光投向了我引以为傲的有关测试的方法论上。我的朋友接着说,“客户支付的是结果,而不是过程。当我买票到西南部,我付的钱是为了到达我的目的地,而不是为了乘坐飞机。”这句话听起来好像有点道理,但我会在这一节讨论度量代码质量并不会让你失去竞争优势, 而会成为你的竞争优势。
管理顾问Tom Peters曾说过:“能度量的事情就能完成。”度量在当前上下文中的意思是往前看以便预测变化。通常测试和质量测量只是在出了问题后才执行的,类似于验尸。而当把它应用在开发过程中时,它便能告诉你项目的健康状况。它也可以暗示未来负面事件发生的可能性。请看下面的方式,代码质量不仅可以提高你的代码,而且可以提高你的项目底线:
- 技术债务是一个隐喻,描述在时间、金钱和资源方面的成本增加,这些是坏的代码随着时间的推移从项目中抢走的资源。有很多质量指标,包括代码复杂度分析,可以识别你的软件代码的债务范畴。
- 有几个指标(如Halstead指标,我将在后面谈到),可以暗示未来需要花费多少努力在维护你的代码库上。了解了这一点可以让你对未来的改进做出准确地预算。
- 许多代码质量度量方式试图通过代码来了解来龙去脉。这些方式可以识别存在缺陷的可能性,并能识别这些缺陷的潜在位置。当评估其他团队的代码时,这些工具会特别有用,因为它们可以像地雷探测器一样,从算法上扫描功能的未知领域。
- 发现新bug的能力很重要,知道什么时候可以停止写测试也一样重要。许多著名的开发者已经证明,测试不是免费的2,所以知道何时停止可以节省资金。许多代码质量的工具可以启发你是否已经达到了一个合适的测试覆盖率。
- 拥抱代码质量的度量是预防性维护的一种形式。我已经听到人们在轻蔑地谈论代码质量,说这就像刷牙。在某种程度上来说,他们是对的,本质上说,质量本来就很难在以后添加,就像刷牙不会摆脱现有的蛀牙一样。
现在有了对代码质量的基线,你有一个有效的定义,不仅能理解质量该如何度量,也能明白为什么应该这样做。在下一节中,我将解释你在追求质量时所用到的各种工具和技术。
时间: 2024-09-09 07:11:16