1.前置的一些概念
1.1 代码审查的目的
- 团队共识
2. 代码集体所有制
3. 内建质量
代码评审最大的问题就是很容易形式化
就是老猴子这么干的,新猴子也这么干,然后就是每天定点大家一起看上去形式上过一遍代码,没有产生社交活动
代码评审是拉水平的一个手段,一定要不厌其烦
从大家有差异的认知,到形成一定共识的过程就是指的团队共识
1.2 review级别:(参与人身份和方式不同划分)
- 相关开发自己看代码(非正式会议)
- 开发人员组内
- 相关开发+直接上级
- 相关开发+直接上级+总监
2. 组织 review
2.1 团队review制度
团队内根据实际情况规定流程
在我们团队内要求:
正式需求上线前要经过:组内,直接上级参加的,技术总监参加的review
小需求紧急问题视情况简化
2.2 review会议组织
相关开发人员自己review
找个时间找个会议室就可以了
有上级或非相关开发参加的
确定会议主持人(一般是被review的人)
主持人要做以下事情:
确定谁来参与,约会议日程
提前把要看的代码,相关需求发出去给参加的人
2.3 如何开会议?
时间控制在一个小时内(太长了效果就差了)
做好会议记录
- 基本信息:时间、地点、参与人
- 记录问题:本次review发现了哪些问题,谁的问题,推荐怎么改【后续要跟进】
- 记录共性问题或好的写法,定期在周会上同步整个团队内,制定相应的规范
按照功能点看相关的代码,在看代码前先简单介绍一下代码实现了一个什么需求做了什么事情 让参与的人有认知
2.4 Review的时候怎么看别人的代码?
- 是否符合团队内规范
- 凭经验看哪里写的有坑
dto类不能有默认值,属性必须是包装类型
数据一致性考虑,执行失败是否有异常处理(日志、补偿)等等…
- 考虑这段代码自己写是否有更好的写法(优雅可读性好)
如果这个项目用了领域驱动设计,还要看
- 代码和设计是否一致
- 聚合、实体、值对象设计是否合理
- 代码的层级调用关系是否合理
- 各个层是否只承担了自己的职责(应用层编排领域服务 ,业务逻辑都在领域层,基础设施层只干技术的事情,只持久化实体 不包含业务逻辑)
不一定要代码彻底写完才进行review,先期可以把主体结构写好,细节写好 todo 如果review时有大的结构变动会很方便调整【要知道写完代码,都测试的没问题,还要大改,重新测试是很痛苦的】