Google 的 Code Review 目标是不断提高 codebase 的质量,同时要求审阅者在代码的高质量和业务的推进之间做好权衡,两边的极端都不要走,并给出了一些 实战经验,下面我总结了下:
1. 设计
新增的几块代码是否有意义?代码的结构是否合理,应该放在 codebase 里还是抽离成组件?对系统的持续集成是否会造成印象?等等。
2. 功能
站在用户的角度和开发者的角度,从功能和代码块上去审阅功能的合理性,除此之外,还要考虑单从代码上看不到的问题,比如并发问题、UI 交互问题、死锁问题等等。
3. 复杂度
审查是否存在工程上的过度设计,鼓励解决当下的问题,不要对未来做过多的设计,因为未来(业务)充满了不确定性。
4. 测试
除非是紧急上线,一般情况下,都要求提交的代码有单元测试、集成测试和端对端测试,要确保测试用例正确、有意义、有效果。
5. 命名
开发者是否给所有的变量都准确命名?一个好的命名不应太长也不可过短,刚好让人看懂的长度最好了。
6. 注释
开发者写的注释除了他自己外其他看得懂么?所有的注释是否是有意义的?是否描述清楚了代码是干啥的?有一点需要强调:对于正则以及复杂的逻辑是必须加注释的。
7. 格式
这一块我觉得他讲的并不好,格式主要在工具层面通过 lint 来纠正,只不过格式之外会有一些团队的约定,需要人为去判断或者不好工具检测的部分,可以在 Code Review 的时候提出来。
8. 文档
相关的 README 或者文档自动生成工具是否补全,废弃的代码、文档是否删除等。
9. 每一行
确保每一行都仔细审阅,包括数据文件、自动生成的文件、大的数据结构描述等等,如果代码很难阅读,你应该提前告诉开发者注意这方面的问题,难阅读的代码,对任何人都是一样难阅读的,这种代码应该尽量避免出现。
10. 上下文
Code Review 工具一般只会展示 diff 的内容,有的时候,你需要阅读整个文件,以确保开发者的逻辑是有用的,站在系统层面去考虑,这段代码是否会带来复杂度,是否是健康的,等等。
11. 好的内容
如果你看到开发者写的内容不错,不要吝啬的赞美和鼓励。