面向过程

  • 代码重复率。
  • 圈复杂度。算法设计有问题。
  • 大文件。复杂功能没做拆分。

用代码扫描工具可以客观的找出这些问题。

面向结果

  • Bug 率。可以按照不同的维度
    • 代码行数: 千行 Bug 率。
    • 用户故事。
  • 服务不可用时间。一般算百分比,或按月算。
  • Bug 平均修复时间(MTTR)。
  • Bug 重新打开率。

代码坏味道

好的代码是高内聚,低耦合的,是健壮的,命名是合适的。

  • 大量重复代码。
  • 圈复杂度高。
  • 代码颗粒太大。太长的函数,类,文件。
  • 不合理的命名。
    • 命名和实际的意思不匹配。
    • 在没有上下文的情况下,命名太过宽泛。如 temp, fetch。
    • 名称过长。
    • 乱编的缩写。
  • 条件分支过多。
  • 函数参数超过三个。
  • 全局污染。JavaScript中改原生函数,全局变量。CSS页面,组件中样式没有做隔离。
  • 数据管理混乱。没做好设计,像一团乱麻。