主观指标

主观指标指代码评审人员给出的主观判定。它们可以有效地评估代码在特定业务场景下的质量可靠性,但是需要耗费人力去进行代码评审(Code Review,CR),并且对CR人员的能力素质有一定要求。
CR有两个要点:一是要统一团队规范,否则即使对于同一个问题,不同人员给出的建议也可能不同,很难做到有效统一;另一点是要把评审做到位,避免形式主义。主观指标包括以下两点。

  1. 可扩展性。指代码为了应对将来的需求变化而需要具备的扩展能力,当新的功能需求出现时,无须或仅需少量修改代码,也无须对整个系统进行重构或者重建。
  2. 可读性。指开发人员能否通过阅读代码快速明白当前函数的功能,这将有助于协同式开发、后续功能迭代以及重构等工作的推进。提升代码可读性的方式有许多,包括注释和文档、统一的缩进、统一的变量命名方案等。以统一的变量命名方案为例,常见的有匈牙利命名法、驼峰命名法和帕斯卡命名法,一旦选用或设置好命名规则,在编写程序时就应保持格式一致。
  3. 对历史业务业务的影响、或者其他模块的影响;

    客观指标

    因为主观指标需要依赖评审人员的素质并占用人员的时间,所以当评审人员的素质不达标或者人员的时间短缺时,很难起到预期的作用。因此,软件工程师们建立了客观指标来衡量代码质量,让计算机代替评审人员对代码进行质量评估。客观指标主要包括以下3个。

  4. 圈复杂度(Cyclomatic complexity),也被称为条件复杂度——用来衡量模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理地预防错误所需测试的最少路径数。根据历史经验,程序出错的概率和圈复杂度的大小有着很大关系。圈复杂度越大就说明代码质量越低,越难以测试和维护,代码运行时出现问题的概率越大。

  5. 千行代码Bug率,它由代码行数和Bug数两个指标共同组成,计算公式:千行代码Bug率=Bug数量/(代码行数/1000)。一般来说,千行代码Bug率的数值越小代表代码质量越好。
  6. 代码重复率。一个项目在不断开发迭代、功能累加的过程中,重复代码的出现是不可避免的,其出现的原因大多数是复制、粘贴代码。

    疑问

    在什么时候做这个review?