如何编写代码审查文档

一、前言

代码审查(Code Review)是开发流程中非常重要的一个环节,可以帮助发现并改正代码中的错误,提高代码质量,也是共享知识、熟悉代码的好机会。
image.png
最近功能开发完毕需要做代码审查,发现国内很多公司不强制要求编写代码审查文档,很多人并不会认真思考代码审查文档需要包括哪些内容,大概该怎么写。
我的看法是,虽然一般公司不要求写代码审查文档,但是最好自己能够准备一个,方便线下代码审查时不遗漏重点,跟踪代码审查的修改情况等。
本文简单给出一个简单的参考。

二、代码审查文档

2.1 文档包括的内容

在准备代码评审之前,你需要做如下准备:

  1. 需求文档:如果项目基于特定的需求文档,也应将需求文档一并提交,帮助审查者理解你的实现目标。
  2. 设计文档:如果有对应的设计文档,将其一并提交。设计文档可以帮助审查者理解你的设计思路,掌握代码的整体架构。
  3. 代码审查清单:列出你想要同事关注的重点,包括新的设计模式,核心算法,重要的类或者函数等。
  4. 单元测试和集成测试代码:对于每一个功能,都应该编写相应的单元测试或集成测试代码,这能够帮助审查者验证功能是否正常。
  5. 问题和改进意见收集表:准备一张表格,可以在代码审查时记录代码审查人员提出的问题和给的改进意见,并跟踪自己的修改情况等。

image.png
通常我会将项目的需求文档、设计文档、代码审查清单(仓库、分支、核心代码、核心单测、单测覆盖率等)、改进意见收集表都记录在文档中。

2.2、代码审查清单

给出代码的仓库地址和代码的分支,项目代码相当于 Master 的diff 链接等。

仓库
分支
Diff 链接

然后给出核心代码清单:
(1)可以从功能方面划分,如每个功能对应的关键代码位置等。

序号功能描述核心代码引用审查重点
1资讯的缓存功能FeedsCacheManager重点介绍 缓存 Key 和过期时间
2资讯推荐功能FeedsFacade.recommend推荐的打分逻辑
3

(2)也可以从层次方面划分,如重点的 Facade 、 Service 、Dao、 工具类代码位置等。

序号功能描述核心代码引用审查重点
关键入口功能1FeedsFacade.xxx
功能2FeedsFacade.yyy
核心逻辑xxxxXXXService.yyy
核心工具类
核心单测

2.3、问题和改进意见记录

以下是一个简单的【问题和改进意见记录】模版。这个模版可以根据实际需要进行调整:

序号文件名/类名/方法名问题描述改进建议问题严重级别提出人进度
1ExampleClass.java变量命名不规范,使用了单字符命名使用有意义的变量名,如: employeeName 代替 nJohn Doe[ ] 完成
2ExampleMethod方法过长,超过100行尝试拆分这个方法,每个方法应尽可能完成一个具体的功能Jane Doe[ ] 完成
3ExampleClass缺少单元测试添加相应的单元测试以保证功能正确性John Doe[ ] 完成

在这个表格中:

  • "文件名/类名/方法名"是指出问题的具体位置。
  • "问题描述"是对问题的简要描述。
  • "改进建议"是对如何改进代码的具体建议。
  • "问题严重级别"表示问题的重要程度,可以依据问题的性质和影响程度进行分级,如:低、中、高。
  • "提出人"是指出这个问题的人。

这只是一个基本的模版,你可以根据自己的需要进行调整和扩展。

三、总结

其实准备代码审查文档并没有浪费很多时间,线下代码审查时自己能够非常清楚自己代码的重点,就可以避免遗漏要点,审查效果会更好。
在这里插入图片描述

代码审查文档也有助于功能开发时间过长之后,快速找到功能的入口、核心代码的位置等。
如果周围的人都不编写代码审查文档你写对应的文档,如果被主管“发现”或许会有更多“机会”。
总之,希望大家尤其是大的项目开发完毕进行线下代码评审时积极编写代码审查文档,方便自己也方便他人。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明如月学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值