代码检视
目标:
学习(知识共享) + 改进(质量保证) 促进开发工作流程的标准化!
Martin(Bob大叔)《代码整洁之道》
- 原则: 相互尊重,建立共识
- 编码规范: 阿里巴巴 Java 开发手册:https://github.com/alibaba/p3c
checkList(检视结果——正向/负向反馈、处理跟踪)
检视项 | 描述 | 检视意见(含检视人) | 处理意见及进度跟踪 | 备注 |
---|---|---|---|---|
设计(可扩展性) | 代码是否很好的设计并且适合你的系统? | |||
功能性*****(BUG) | 代码的表现是否达到了作者的期望?代码的表现是否对用户友好?所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?在哪里使用了第三方工具,返回的错误是否被捕获?异常处理机制;安全性检查 | |||
复杂度*****(可维护性) | 代码是否可以实现的更简单?当其他开发者将来会使用到这些代码时,是否会很容易理解,可读性如何?循环是否设置了长度和正确的终止条件?是否有可以被库函数替代的代码?是否有可以删除的日志或调试代码?性能优化项 | |||
测试 | 代码是否被正确的及很好的设计的自动化测试过?单元测试 | |||
命名 | 开发者对于变量,类,方法等等的命名是否足够清晰易懂? | |||
注释***** | 注释是否清晰且有意义?对非常规行为和边界情况处理是否有描述?注释是否准确,是否过期?是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’? | |||
风格 | 代码是否符合我们的代码规范? | |||
文档 | 开发者是否已经上传了相关的文档?需求背景,设计文档,实现策略等;第三方库的使用和函数是否有文档? |
备注:
- 代码样式和格式应该由自动化工具验证!
- 单元测试?
- 检视描述使用不同的前缀进行区分:是否要解决,是否可改进,是否为经验;
- 技术事实和数据高于观点和个人偏好;
- 代码风格规范是绝对的权威:硬蛋保持风格一致,如果没有规范,接受原作者的;
- 应当关注软件设计的原则,除非有正当的数据支撑,不应当违背设计原则;
- 持续完善检视内容,输出相关规范及最佳实践!
- 编程素养、业务逻辑、架构设计、单元测试、性能、安全
工具:
git-ci集成静态扫描; 使用pull request进行检视 review board
时机
feature合并到dev时!避免测试之后,上线之前…
形式:
面对面; 基于git;
参考:
- Google:https://google.github.io/eng-practices/review/reviewer/
- LinkedIn:https://dimon94.github.io/2018/06/10/- LinkedIn%E7%9A%84%E9%AB%98%E6%95%88%E4%BB%A3%E7%A0%81%E6%A3%80%E8%A7%86%E5%BB%BA%E8%AE%AE(%E8%AF%91)/
- https://www.shuzhiduo.com/A/kjdw2RrE5N/
- https://xw.qq.com/cmsid/20200815A00Z0O00
- https://blog.alantsai.net/posts/2019/05/code-review-what-is-code-review-and-why-we-want-to-do-it
- Airbnb:https://buzzorange.com/techorange/2016/08/16/airbnb-code-review/
- https://blog.fundebug.com/2019/03/28/is-code-review-necessary/
- https://juejin.cn/post/6844903944175484936
- https://www.jianshu.com/p/f79c4e948954
- https://tsh.io/blog/code-review-best-practices/
- https://www.zhihu.com/question/41089988