加快代码审查的 7 个最佳实践

目录

前言

1-保持小的拉取请求

2-使用拉取请求模板

3-实施响应时间 SLA

4-培训初级和中级工程师

5-设置持续集成管道

6-使用拉取请求审查应用程序

7-生成图表以可视化您的代码更改


前言

  • 代码审查可能会很痛苦
  • 软件工程师经常抱怨审查过程缓慢,延迟下游任务,并在您在打开的拉取请求 (PR) 和下一个任务之间来回导航时导致上下文切换
  • 代码审查也可能充满吹毛求疵,这对所有相关人员来说都是一种糟糕的体验
  • 为了解决这个问题,一些工程师甚至建议我们完全摆脱拉取请求和代码审查
  • 虽然这可能适用于初创公司的小团队,但我认为这不是每个人的正确解决方案,尤其是企业级公司
  • 相反,有很多方法可以让代码审查过程对代码作者和代码审查者都有更好的体验

1-保持小的拉取请求

  • 每个工程师都害怕审查更改了 1000 多行代码的拉取请求
  • 这些审查可能需要几个小时才能完成,而且通常最终发生的是审查者开始浏览代码而不是仔细审查它
  • 解决方案是保持你的拉取请求很小
  • 小型 PR 更容易且能更快地审查,因为审查者不需要花费太多时间来建立所有更改如何协同工作的心理模型
  • 更改的代码也更少,这有望等同于更少的错误、更少的评论以及更少的作者和审阅者之间的来回循环
  • 一开始,保持你的 PR 很小似乎很困难,但如果你将工作分解为小任务并保持专注,就可以做到
  • 不要在实现新功能或修复错误的同时进行重大重构
  • 在代码中使用功能标志,这样您就可以将一小部分新功能合并到主分支中,而不会出现在生产应用程序中
  • 保持你的 PR 小,您的审阅者将不胜感激

2-使用拉取请求模板

  • 另一个烦恼是被要求在没有任何上下文的情况下审查拉取请求
  • 当一个 PR 没有任何解释地丢在你的腿上时,你常常会想,“这个 PR 是干什么用的?这解决了什么问题?有没有相关的任务?为什么采取这种特殊的方法?
  • 拉取请求模板是一种可配置的小型表单,您可以将其设置为每个新拉取请求的默认文本
  • PR 模板提示代码作者为其 PR 提供相关详细信息
  • 通常,PR 模板会要求您简要说明您所做的工作及其原因、任务单的链接以及用于验证更改的测试计划
  • 好的 PR 模板通常还包括一个简短的清单供代码作者检查,以确保他们没有错过任何基础知识
  • 该清单可能包括单元测试、文档、国际化、跨浏览器支持和可访问性等项目
  • 下面是一个示例拉取请求模板:

3-实施响应时间 SLA

  • 如果您发现拉取请求未经审查的时间比您希望的要长,那么现在是为团队设定新拉取请求审查速度的好时机
  • 换句话说,PR 在必须被提取之前可以存在的最长时间是多少?一小时?两个小时?24小时?
  • 您对该问题的回答可能取决于您团队的规模
  • 对于来自您团队的内部拉取请求与来自其他团队的外部拉取请求,您可能也有不同的答案
  • 在选择响应时间 SLA(服务水平协议)时,您需要找到合适的平衡点
  • 当你发布一个新的 PR 时,期望每个人都立即放弃他们正在做的任何事情并审查你的代码是不合理的,但你也不希望 PR 几个小时都没有被审查
  • 找到合适的平衡点,让你的队友进入心流状态
  • 他们应该能够编写自己的代码,然后全天在自然停止点审查 PR
  • 一般而言,为内部团队 PR 提供 2 小时响应时间 SLA,为外部团队 PR 提供 24 小时响应时间 SLA
  • 无论您和您的队友做出什么决定,签订团队协议都可以让您彼此负责
  • 如果每个人都同意一个特定的 SLA,并且您的一个 PR 的时间已经过去,那么您就知道可以开始向人们提出问题了

4-培训初级和中级工程师

  • 培训机会无处不在
  • 指导经验不足的工程师不仅仅是教他们使用的技术和语言
  • 它还包括教他们如何进行有效的代码审查等软技能
  • 在代码审查期间教你的队友你在寻找什么
  • 帮助他们了解什么是重要的,什么不是
  • 教他们如何在代码审查评论中进行有效沟通,例如在非阻塞建议前加上“nit”

5-设置持续集成管道

  • 当大多数评论是“缺少分号”或“缩进似乎在这里”时,代码审查变得乏味
  • 不要在代码审查期间花时间在代码格式化程序和代码检查器可以为您处理的事情上
  • 让计算机将琐碎的事情自动化,这样你就可以专注于需要人去做的重要事情
  • 您可以使用Travis CI、CircleCI、GitHub Actions或GitLab CI/CD等工具为您的存储库设置持续集成
  • 您的 CI 管道将为您运行这些格式化和 linting 任务以及您的单元测试
  • 如果 CI 管道在拉取请求的任何步骤失败,它将阻止该拉取请求被合并
  • 现在,您已经自动化了代码审查的几个重要部分,从而节省了您的时间

6-使用拉取请求审查应用程序

  • 有时不仅需要查看拉取请求中的代码,还需要手动查看应用程序中的更改以验证事情是否正常
  • 对于具有复杂设置步骤的应用程序,提取其他人的代码并在您的计算机上本地运行它可能需要五分钟到一个小时不等
  • 多么令人头疼
  • 拉取请求审查应用程序用于在创建新 PR 时自动将您的代码部署到短期测试环境
  • 这允许审阅者轻松检查 UI 更改,而无需下载代码并在他们的机器上本地运行它
  • 这不仅可以节省时间,而且还可以通过简化审阅来促使审阅者在审阅中更加彻底

7-生成图表以可视化您的代码更改

  • 在 GitHub 或 GitLab 中查看代码时,文件通常按字母顺序显示
  • 对于相对较小的 PR,这可能不是问题
  • 但是,当 PR 中涉及数十个文件时,有时将这些更改按逻辑组合在一起会很有帮助,这样您就可以在更大的图景中看到它们是如何组合在一起的
  • CodeSee Review Maps可帮助您可视化更改了哪些文件以及这些更改如何影响它们的上游和下游依赖项
  • 它们与 GitHub 集成以自动在您的 PR 上发布评论和图表
  • 您甚至可以创建代码的交互式导览,以帮助指导您的代码审查员
  • 最重要的是,CodeSee 地图对开源组织及其公共存储库是免费的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/273237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux练习题

1、查看后台进程作业ID的指令是(A) A. jobs B. ps C. ls D. pg 2、在Linux系统的vi编辑器中,如果不保存对文件进行的修改,应使用(D )命令强制退出vi编辑器 A. :q B. :wq C. :q! D: :!q 3、列出当前目录下以…

Python实现ETS指标平滑模型(ETSModel算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 ETS模型(Error-Trend-Seasonality Model),是一种广泛应用于时间序列…

QT----云服务器部署Mysql,Navicat连接1698 -Access denied for user ‘root‘@‘‘

阿里云有活动,白嫖了一年的新加坡轻量级服务器,有点卡,有时候要开梯子 白嫖300元优惠券 目录 1 安装启动Mysql服务2 更改连接权限2.1 Navicat连接报错1698 -Access denied for user root 3 qt连接云服务器数据库 1 安装启动Mysql服务 我使用…

算法第二十六天-删除有序数组中的重复项Ⅱ

删除有序数组中的重复项 题目要求 解题思路 题目要求中提到原地修改,那么肯定需要一个指针指向当前即将放置元素的位置,需要另外一个指针向后遍历所有元素,所以[双指针]解法呼之欲出。 慢指针slow:指向当前元素放置的位置&…

深入了解二叉搜索树:原理、实现与应用

目录 一、介绍二叉搜索树 二、二叉搜索树的基本性质 三、二叉搜索树的实现 四、总结 在计算机科学中,数据结构是构建算法和程序的基础。其中,二叉搜索树(Binary Search Tree,简称 BST)作为一种常见的数据结构&#…

JavaEE+springboot教学仪器设备管理系统o9b00-springmvc

本文旨在设计一款基于Java技术的教学仪器设备销售网站,以提高网站性能、功能完善、用户体验等方面的优势,解决现有教学仪器设备销售网站的问题,并为广大教育工作者和学生提供便捷的教学仪器设备销售渠道。本文首先介绍了Java技术的相关基础知…

CSS拖曳盒子案例

让我为大家带来一个小案例吧&#xff01; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;padding: 0;}.box1 {width: 100px;height: 100px;background-color: black;margin-bot…

大载重无人机基础技术,研发一款50KG负重六旋翼无人机技术及成本分析

六旋翼无人机是一种多旋翼无人机&#xff0c;具有六个旋翼&#xff0c;通常呈“X”形布局。它采用电动串列式结构&#xff0c;具有垂直起降、悬停、前飞、后飞、侧飞、俯仰、翻滚等多种飞行动作的能力。六旋翼无人机通常被用于航拍、农业植保、环境监测、地形测绘等领域。 六旋…

Django工具

一、分页器介绍 1.1、介绍 分页,就是当我们在页面中显示一些信息列表,内容过多,一个页面显示不完,需要分成多个页面进行显示时,使用的技术就是分页技术 在django项目中,一般是使用3种分页的技术: 自定义分页功能,所有的分页功能都是自己实现django的插件 django-pagin…

数据库(mysql)-新手笔记(主外键,视图)

数据库基本知识点- http://t.csdnimg.cn/CVa9e 主外键 主键(唯一性,非空性) 主键是数据库表中的一个或多个字段&#xff0c;其值唯一标识表中的每一行/记录。 唯一性: 主键字段中的每个值都必须是唯一的&#xff0c;不能有两个或更多的记录具有相同的主键值 非空性&#x…

稀碎从零算法笔记Day14-LeetCode:同构字符串

题型&#xff1a;字符串、哈希表 链接&#xff1a;205. 同构字符串 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那…

红队攻防之Go上线基础免杀(一)

不堪风雨乱红尘&#xff0c;情到真时恰是空 加载bypass插件 使用插件生成shellcode.txt文件 选择监听器和配置 使用插件生成的shellcode文件如下&#xff1a; process_xxx xxx,...... > code.txtprocess_xxx xxx > code1.txtprocess_xxx xxx > code2.txt将生成的三个…

SPSS26安装后无法启动,提示:应用程序的并行配置不正确

以下的解决方法供参考&#xff1a; 1、安装jdk并配置 2、 找到安装目录\Statistics\26\VC9下的vcredist_x64.exe&#xff0c;打开安装并选择“repair”&#xff0c;安装完成后重启&#xff0c;一般可以成功。 3、若还不行&#xff0c;安装较新的C运行库&#xff0c;再试试。 …

深入理解 Webpack 热更新原理:提升开发效率的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

(001)UV 的使用以及导出

文章目录 UV窗口导出模型的主要事项导出时材质的兼容问题unity贴图导出导出FBX附录 UV窗口 1.uv主要的工作区域&#xff1a; 2.在做 uv 和贴图之前&#xff0c;最好先应用下物体的缩放、旋转。 导出模型的主要事项 1.将原点设置到物体模型的底部&#xff1a; 2.应用修改器的…

部署LVS+Keepalived高可用群集(抢占模式,非抢占模式,延迟模式)

目录 一、LVSKeepalived高可用群集 1、实验环境 2、 主和备keepalived的配置 2.1 yum安装ipvsadm和keepalived工具 2.2 添加ip_vs模块并开启ipvsadm 2.3 修改keepalived的配置文件 2.4 调整proc响应参数&#xff0c;关闭linux内核的重定向参数响应 2.5 将主服务器的kee…

华为OD机试C卷“跳步-数组”Java解答

描述 示例 算法思路1 不断移动数组将元素删去&#xff08;并未彻底删除&#xff0c;而是将数字元素前移实现“伪删除”&#xff09;这样删除元素的位置就呈现一定规律&#xff0c;详细见下图&#xff08;潦草的画&#xff09; 答案1 import java.util.*;public class Main {…

平衡二叉树

前言 在关键字排列随机的情况下&#xff0c;二叉排序树的平均查找长度和 l o g n log n logn是等数量级的。在某些情况下&#xff0c;尚需在构成二叉排序树的过程中进行“平衡化”处理&#xff0c;使其成为平衡二叉树。 如果任何初始化序列构成的二叉排序树都是平衡二叉树&…

注意!!墙裂推荐几个好用的实用小工具!一定会用到的!

前言 在开发的世界里&#xff0c;面对各种挑战和问题时&#xff0c;拥有一套合适的工具箱至关重要。这不仅能提升我们的工作效率&#xff0c;还能让复杂的任务变得简单&#xff0c;甚至在解决棘手问题的同时&#xff0c;还能让我们的心情略微舒畅。众所周知&#xff0c;有用的…

Java - Spring MVC 实现跨域资源 CORS 请求

据我所知道的是有三种方式&#xff1a;Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2。 设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包&#xff0c;配置一下web.xml就行了。我也并不推荐&#xff0c;这里放两个我在网上找到的配置相关文章&#xff0c;感兴趣可…