Code review实践

2 阅读3分钟

一个好的code review,基础的是能检查bug,更好的是能从架构和设计上进行检查和思考

Aim of Code Review

  • 预防bug,保证代码质量——首要目的
  • 完善产品代码设计,架构设计
  • 形成团队规范
  • 增强成员之间的沟通
  • 代码技能提升

不找不做Code Review的借口

  1. 迫于业务的压力,PM又来催进度了,能快点就快点,实现功能就好;
  2. 反正这块业务由我负责,我能看懂就行;
  3. 交给别人code review,感觉有点浪费别人的时间;
  4. 当然还有很有很多理由...

这些理由都没有问题,或许工作中是会遇到这样那样的问题,让我们忽略了code review。但是,这都不是让我们放弃code review,code review带来的利永远要大于弊。

How to Code review

PR时都应该检查些什么?这里准备了两个列表:required checklist & recommended checklist

required checklist所列内容建议RD先自行代码diff,再提PR给reviewer.

Required checklist

满足下列条件之一,不能合并PR:

  • 有明显的bug, common mistakes例如:
    • 缺少error handle

      • 例如异步缺少try catch
    • 缺少完整性

      • promise不catch, 必要场景下只写if 没有else
    • 缺少判空

      • a.b.c.d (a = null)
  • 有潜在的bug

    • 例如:corner cases ,业务逻辑潜在bug等
  • 未删除console.log

  • 随意设常数

    • 例如 if (a === 10 || a === 40) {...}
  • 复杂逻辑缺少解释性的注释

  • 冗余代码未删除

    • 不允许添加未使用的变量、模块、依赖等

除此之外,最好检查下这些:

Recommended checklist

  • 变量名命名是否恰当,是否语义化

    • a, ab, t1, t2, t3... NG

    • 关于代码变量命名:

      一段代码的逼格,一半以上是靠变量命名体现的。这个是实话,同一个概念,你是用的语言是否正规,单复数是否分清,形容词副词是否分清,是否合理使用倒装,确实很能体现一个程序员的逼格。往大的意义上说,一个项目中的变量名,是否规范,是否收敛(同义词收敛为一个并且有规范),也是项目质量的体现。

  • 是否可能导致性能低下

  • 随意添加并不真正必要参数

  • 不使用已有的功能而去自行写一个

  • 是否存在面条式代码

  • 引入新的依赖是否必要

  • 代码可读性

    • 例如 嵌套太多、一个函数返回不一致
  • 代码的耦合度

    • 高内聚,低耦合
  • 代码复用性

  • 代码扩展性

  • commit message是否规范?

  • 方案设计是否恰当

  • 文件组织是否合理

    • helper? utils? components ...
  • 如果是重构,有文件迁移,第一条commit需要原封不动的将代码迁移,不然不会有修改记录 这是个很好的实践 👍

切记:改动较多,提前PR

有种建议是:一次code review 不要超过400行,超过400行,很难发现bug