在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

关于 Pull Request 的十个建议

  • 2015-02-24
  • 本文字数:1543 字

    阅读完需:约 5 分钟

Pull Request 是 Bitbucket GitHub 等源代码托管系统为了方便开发者之间协作而提供的一个功能,它提供了一个用户友好的 Web 界面来帮助审查人员进行代码审查。开发人员可以通过 GitHub 发出 Pull Requests 要求请求他人将程序拉下来进行代码审查。一个好的 Pull Request 不仅仅只是代码的事情,还牵涉到代码审查者对代码的审查,所以开发者不仅要写出好的代码,还必须迎合审查者的审查工作,才能给使得自己贡献的代码顺利通过审查并合并到 master 分支。现对丹麦的程序员、软件架构师、独立顾问 Mark Seemann 在自己博客中发布的一篇题为《关于Pull Request 的十个建议》的文章进行一个全面的整理,以供读者阅读和参考。具体内容如下:

1. 进行较小的 Pull Request

一个小且集中的 Pull Request 会使得提交的代码更加容易通过审核。据 Mark Seemann 根据自己的经验透漏,对提交代码进行审查所花费的时间是随着代码大小呈指数增长,而非线性增长;Pull Request 多大才合适与 Pull Request 做了什么相关,最好少于 12 个文件的改变。如果 Pull Request 非常大,审查者就需要安排连续、相对比较长的时间进行审查,就会造成审查过程的延迟。

2. 每个 Pull Request 只做一件事

就如软件设计模式中的单一责任原则所指:一个类只负责一个功能领域中的相应职责,因此一个Pull Request 也应只关注一件事情。如果一次Pull Request 做了多件事情的话,将会增加审查过程的延迟、审查被拒绝的可能性。

3. 注意代码行的字数, 最好少于 80 个字

代码审查者会使用不同的审查工具来审查提交的代码,并且 GitHub 和 Stash 还提供了不同形式的视图,这样就使得代码审查者能通过不同视图非常方便来审查用户的提交。如果代码行比较宽的话,审查者就不能在一个屏幕或者半个屏幕中来阅读代码,不得不拖动滚动条来阅读代码。为了使得代码比较容易审查,每行代码最好少于 80 个字符。

4. 避免重新格式化代码

就算自己觉得应该改变当前代码的格式以适合自己的风格,但是请不要这么做。在源代码上,用户对每个字节的改变将会在不同的审查视图显示出来。有些审查者会选择忽略空格改变,但是有些审查者会审查这些代码,对这些格式化引起的代码审查属于不必要的审查。如果真需要解决空格问题的话,就需要在其他文件里移动代码、改变格式或者对代码做其他样式改变,并在 Pull Request 注释中给出相应的说明。

5. 确保代码能够编译通过

在提交 Pull Request 时,应该首先在自己的电脑上进行编译构建。在编译构建过程中,务必注意编译过程出现的警告,要把警告当作错误来对待,这些警告可能不会阻止编译,就有可能被忽略。然而,当用户 Pull Request 操作引起了很多编译警告的话,代码审查者就有可能拒绝对应的提交。

6. 确保提交的代码能够通过所有测试

即使问题代码已经做了自动化测试,但是在提交 Pull Request 时,也要务必保证针对代码的所有测试都必须通过。

7. 添加测试

为代码建立测试规则,即使出现问题的代码已经做过了自动化测试,最好也要为自己提交的代码也做下测试。

8. 记录下自己提交的原因

利用文档对代码进行注释、对自己的代码直接进行注释、利用版本控制器提供的提交信息功能备注信息、利用 Pull Request 管理系统(如 GItHub 或者 Stash)添加自定义的 Pull Request 注释信息。

9. 编写符合编码规范的代码

按照代码正确性规则编写代码,并附上有效的代码注释、提交信息、Pull Request 信息等。

10. 避免颠簸

不同审查者对 Pull Request 有可能具有不同的观点,这就会导致颠簸的情况,就需要用户移除冲突的提交和推送修改的分支,并备注有效的信息。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-02-24 00:4310762
用户头像

发布了 46 篇内容, 共 55.7 次阅读, 收获喜欢 15 次。

关注

评论

发布
暂无评论
发现更多内容

舆情监测软件选型指南:5个核心维度助你避坑

沃观Wovision

舆情监测 海外舆情监测 舆情监测软件 舆情监测网站

AI能力编排与评测系统:构建企业智能化核心引擎

上海拔俗

读懂5G新通话:可能是AI落地千行万业的首个全民级场景

Alter

AI 5G

守护全球生命线:基于舆情监测的供应链风险预警模型

沃观Wovision

舆情监测 沃观Wovision 舆情监测系统 舆情监测网站 全球舆情监测

AI布料缺陷检测系统:重塑纺织制造业的质量管控体系

上海拔俗

AI 未知病原体测序分析系统:公共卫生应急响应新范式

上海拔俗

8 人团队如何效率拉满?——创联云的开发方法论

NocoBase

数据库 开源 低代码 插件 无代码

三维建筑模型如何查看?好用的三维看图神器来了

在路上

cad

万界星空科技MES系统功能介绍及实施指南

万界星空科技

数字化转型 制造业 mes 万界星空科技mes MES平台

AI 智能校审系统:重塑数字时代内容生产与质检新范式

上海拔俗

多维无界,观测有道|Bonree ONE 2025秋季版全球发布!

博睿数据

AI风险评估系统:技术架构、行业落地与风控效能革新

上海拔俗

2026年全球舆情监测公司怎么选?

沃观Wovision

舆情监测 沃观Wovision 舆情监测系统 舆情监测软件 全球舆情监测

Unity 开发数字孪生项目的流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 UE引擎

10 分钟搞定神经网络

俞凡

人工智能

AI智能决策分析系统:从数据洞察到精准执行的决策新范式

上海拔俗

CAD图块秒插入,水电风设备一键添加!

在路上

cad CAD看图王

虚幻引擎(UE)开发数字孪生项目流程

北京木奇移动技术有限公司

数字孪生 ue 软件外包公司

虚幻引擎(UE)开发数字孪生项目的优势

北京木奇移动技术有限公司

数字孪生 软件外包公司 UE引擎

盘点全球TOP10舆情监测系统软件

沃观Wovision

舆情监测 舆情监测系统 海外舆情监测 境外舆情监测 舆情监测软件

我带的外包兄弟放弃大厂转正,薪资翻倍入职字节

大厂码农老A

Java 前端 成长 后端 职业发展

WebGL 数字孪生系统的外包开发

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

基于Amazon Redshift MCP Server + Strands Agents SDK + Amazon Bedrock AgentCore Runtime实现Agentic Analytics

亚马逊云科技 (Amazon Web Services)

电网仓储出入库盘点推荐用哪款RFID通道机?

斯科信息

RFID通道机 CK-TP3 CK-TP5A

AI 智能知识管理平台:构建企业智慧大脑,释放数据核心价值

上海拔俗

AI 健康档案管理系统:构建智能医疗的数据基石

上海拔俗

AI 智能管控系统:驱动企业运营迈向实时感知与智能决策新阶段

上海拔俗

AI 智能控制识别系统:驱动产业智能化升级的核心引擎

上海拔俗

如何有效开展境外的舆情监控工作?

沃观Wovision

舆情监控 海外舆情监控 沃观Wovision 境外舆情监测 舆情监控网站

下一代境外舆情监控的AI赋能与智能溯源

沃观Wovision

舆情监控 海外舆情监控 舆情监控软件 舆情监控网站 境外舆情监控

AI值守辅助系统:构建全天候智能响应与决策支持体系

上海拔俗

关于Pull Request的十个建议_语言 & 开发_李小兵_InfoQ精选文章