代码评审流程(摘要)

吃苹果的上帝 2021-10-29 13:42:20 ⋅ 785 阅读

原文:Code review workflow

无论多么牛B的人,都不能开发出完全没有问题的软件。

引入代码评审是不错的主意。

代码评审并不能保证我们的代码不出问题,而是用来在软件发布前尽可能多地找到并解决问题。它引入一个或多个同事同时阅读我们的代码,能够更容易地找到更多问题,而且在软件发布之前修复问题的成本是极低的。

代码评审有如下好处:

  • 更少的bug数。开发人员可能还在持续地产生bug,不过代码评审将会减少最终发布软件的bug总量。
  • 更好的安全性。代码评审能够比较容易地定位潜在的代码缺陷,能够在发布之前修复。
  • 共享知识。团队成员能够在评审对方的代码时学到有用的知识,知道哪些应该坚持,哪些应该摒弃。
  • 控制代码质量。比如可读性、效率、可维护性,这些指标对长期维护的项目极其重要。
  • 获得更好的性能。代码评审能够发现性能问题。

代码评审主要步骤:

  • 开发人员使用分支实现特性和bug修复的开发工作
  • 分支开发就绪后,开发人员请求代码评审
  • 团队的其他成员评审分支上的代码
  • 编制评审时发现的需要修改的条目
  • 开发人员针对这些条目修改代码并提交
  • 再次评审,直到该分支被批准发布
  • 该分支被合并到其它分支,进行测试或发布

第一步:写代码、请求评审。

  • 创建分支,在其上进行开发
  • 每一个特性和bug修复都要创建分支
  • 分支能够提高开发效率,减少干扰和冲突。
  • 不通的特性使用不同的分支并行开发
  • 分支开发完成后,在进行测试之前进行代码评审
  • 此时修复代码的问题所花费的成本最低
  • 主持评审的人一般是团队里经验丰富的成员
  • 有时候会让对某模块不是很熟悉的人主持此模块的代码评审,由于与此人熟悉此模块的业务和代码逻辑

如何进行代码评审的准备工作,以便让评审主持人有足够的信息引导评审进程?

  • 确保自己开发的代码具备自表达(self-explanatory)能力,有能满足阅读代码需要的文档和注释
  • 提供自动化的测试用例,便于验证代码能够正常工作
  • 如果被评审的分支是修复bug用的,要包括bug重现的步骤说明和验证bug修复的详细数据
  • 请求代码评审时,请用简短明了的描述说明分支实现的目标

第二步:评审代码、反馈结果。

  • 提出问题,讨论
  • 有必要更改的形成记录,开发工具支持的话可以直接创建任务

评审代码时的主意事项:

  • 每次评审不要超过400行代码,时间控制在90分钟内
  • 较大的分支可以分成多次进行评审
  • 对需要重点检查的内容事先形成检查列表,用于所有的评审,评审时针对这些项逐一检查。这个检查表在整个团队内共享。可以包括:
  • 代码的文档和注释是否合适
  • 是否遵守公司的代码规范
  • 测试用例是否覆盖了特性的功能
  • 是否有代码重复的情况
  • 其他...
  • 确保特性和bug修复能够正常工作
  • 评审时产生的问题,使用简洁明了的、易实行的注释或问题条目记录,避免大段难读、难理解的文字描述

第三步:修复发现的条目,结束评审。

没什么好说的,提出问题的人查看问题是否得的修复,最终大家同意参与评审的分支进入下一步,评审完成。


全部评论: 0

    我有话说:

    「开源资讯」陌陌安全团队开源Java静态代码审计插件

    陌陌安全本次开源的Java静态代码安全审计插件,侧重于在编码过程中发现项目潜在的安全风险,并提供一键修复能力。 此插件作为Java项目静态代码安全审计工具,侧重于在编码过程中发现项目潜在的安全风险

    交叉型工作流程

    交叉型工作流程跟前面讨论过的流程相比大不相同,不再使用单一的服务器端中心代码仓库,而是给每个开发人员一个服务器端的代码仓库,也就是说每个开发人员都有两个Git仓库:私人的本地仓库和公共的服务器端仓库

    淘宝开源代码质量检测工具!

    好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位。好的代码可以加快应用的开发迭代速度,不必花过多的时间来修复 bug 和完善代码。好的代码不但能够使得新的项目成员更容易加入项目,同时方便项目

    Git中心式工作流程

    Git中心式工作流程

    Git特性分支工作流程

    Git特性分支工作流程

    Git典型工作流程介绍

    Git典型工作流程介绍

    Gitflow工作流程

    Gitflow工作流程来源于Vincent Driessen的网站nvie。 这个工作流程围绕项目发布定义了一个严格的模型,它比特性分支工作流程复杂很多,为更大型的项目提供了强劲的管理框架。 本流程

    Java Web实战篇-代码之美

    代码之美-小小的优化让你的代码Bug更少,执行效率更高

    代码这样优化,瞬间清爽多了

    今天这篇文章我们又来聊聊代码优化。 隐藏行为细节 在平时的开发过程中,你肯定会碰到这样的业务,比如判断车速是否正常。一般编码如下: float speed = 60f

    后端Coder如何做好代码设计?

    来源:http://r6d.cn/C5Ja 说明:生鲜电商属于一个软件的产品,那么如何做好代码设计呢?代码设计,是程序员做项目时,在coding之前非常重要的一个步骤,可以说关系到整个系统

    【总结】前端5大常见设计模式,代码一看你就懂!

    代码示例来掌握前端5大设计模式

    Google技术:你不了解Google最新发布的JS代码规范 的最佳实践

    Google为了那些还不熟悉代码规范的人发布了一个JS代码规范。其中列出了编写简洁易懂的代码所应该做的最佳实践。

    完整研发流程中用到的环境类型和协作关系

    研发流程有多个不同的环节构成,一般分为开发、测试、验证和部署,这些环节需要不同的环境来支撑。对于企业来说,这些环境又需要互相配合来完成正常的研发部署工作,为了避免混乱的相互引用、提高协作的效率,界定

    Kooteam 0.1.3 发布,重构系统日志模块,简化安装流程

    Kooteam是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发等工具,并接入了微信小程序,钉钉开放平台,使用便捷高效。

    「强烈推荐」这是我看过最接“地气”的代码问题与重构实践

      写这个文章是因为前段时间确实因为公司的业务开发太忙太紧,所有开发都处在于加班赶项目,并且加入的新人较多造成了一系列代码不可控的质量问题。 文章针对这段时间代码出现的各种各样的问题

    微信小程序实战篇:实现抖音评论效果

    我们在写小程序的时候经常会遇到弹出层的效果而现有官网提供的跳转方法多数是不支持参数传递的。本文教大家做一个抖音评论效果的小程序......

    Sentinel 1.8.1 发布,高可用流量防护组件

    Sentinel 是阿里巴巴开源的,面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从流量控制、流量整形、依赖隔离、熔断降级、系统自适应保护等多个维度来帮助开发者保障微服务的

    「千万级秒杀架构」千万级并发流量下,如何将流量串行化?

    流量串行化,是指在高并发的场景下通过排队的方式将无序的并发流量整理成有序串行流量。大家都知道在 Redis 集群部署模式出现之前,市面上大多数 的 Redis 都是采用一主多从模式,写操作全部是由主