发布于 2026-01-06 12 阅读
0

11 个让代码审查更轻松的实用技巧,开发者 DEV 的全球展示与分享挑战赛,由 Mux 呈现:展示你的项目!

11 个让开发人员更轻松地进行代码审查的实用技巧

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

代码审查是构建优秀软件过程中最被低估的环节之一。

一开始可能会觉得很难很复杂,但实际上比你想象的要容易得多。

本文简要概述了开发人员进行代码审查的 11 种实用方法和策略。

这将有助于你更好地进行代码审查。


🎯 什么是代码审查?

在深入探讨要点之前,让我们先花点时间了解一下代码审查的含义。

代码审查是指开发人员在合并或发布代码之前,互相检查对方的代码以提高代码质量。

这个术语code review可以有很多种含义,从简单地阅读朋友的代码到 20 人参加的会议,详细分析每一行代码。

主要涉及两个角色:

  • Reviewer:负责阅读代码并决定何时将其合并到团队代码库中。
  • Author:负责编写代码并提交审核,主要通过 pull request 的方式。

当审核员确认修改后,审核就结束了 approves 。你会看到 LGTM,这是“我觉得不错”的缩写,意思是一样的。

如果您想了解更多, GitLab 出品的《什么是代码审查?》指南是一个很好的起点。它列出了代码审查的优点、缺点、几种方法和一些最佳实践。

代码审查

让我们来探讨一下在进行代码审查时应该考虑的技巧和策略。


1. 使用人工智能工具进行情境反馈。

使用人工智能工具可以帮助您节省时间,并确保合并的代码质量非常高。

我搜索了很多工具(主要是在 Reddit 上),找到的最好的工具是CodeRabbit

coderabbit

根据官网信息,CodeRabbit 已审核了 500 万个 pull request,这足以证明其可靠性。而当你维护一个私有代码库时,这一点尤为重要。

它使用机器学习算法来分析您的代码库,识别潜在问题,并针对拉取请求提供上下文相关的反馈。

✅ 您可以获得逐行反馈和一键式简易修复。✅
您可以在评论区创建问题并进行实时聊天。✅
它可以与 GitHub、GitLab、Azure DevOps 和 BitBucket 云平台(测试版)集成。

您只需使用命令即可执行某些操作,例如@coderabbitai summary…… @coderabbitai review。人工智能还会随着时间的推移不断学习,并识别出特定于存储库的某些最佳实践。

您可以观看这个简短的演示!

免费版会提供拉取请求的摘要(这是最重要的),并且提供免费试用,帮助您了解它是否适​​合您。

您可以在文档中找到更多信息如果您想了解CodeRabbit,它是开源的。

您还可以了解Linux 基金会如何使用 AI 代码审查来减少开源软件中的人工瓶颈

如果您想探索其他工具,还有一些其他工具可供选择:

  • Codacy- 自动识别并修复代码质量问题。
  • Synk- 用于查找和修复代码/依赖项中的漏洞。
  • Bito- 代码审查助手,帮助您发现问题。
  • Qodo- 提高审核质量,同时减少来回沟通的延迟。
  • Code Review GPT GitHub Actions- 使用 GPT 直接在 GitHub Actions 中自动执行代码审查。
  • GitHub Copilot- 最值得信赖的人工智能结对程序员。
  • PullRequest- 结合人工智能和专家人工审核。

我知道这些描述听起来几乎一样,只需浏览其他博客即可找到更多工具。


2. 将你的评论与原则联系起来,而不仅仅是观点。

我是一个开源项目的维护者,所以我知道提供反馈有多么困难。

如果程序员发给你一份他认为很棒的变更列表,而你却列出一大堆理由说明为什么不行,这可能会传递完全错误的信息。

大多数时候,作者会将对他们代码的批评视为他们不称职的程序员的间接证明,但这绝对不是事实。

在对代码提出反馈意见时,请解释您建议的更改以及更改的原因。

语气上的简单变化就能产生很大的影响:

我们应该合并这两个功能。✅
“这个功能同时处理身份验证和日志记录,违反了单一职责原则。我们应该将它们分开。”

这样写能将你基于个人意见的反馈转化为建设性意见。要客观,并尽可能提供链接等具体证据。


3. 对不同类型的评论采用通用方法。

开发人员并不了解许多技术,例如:

The Show and Tell Review:作者向审稿人展示修改之处,并解释修改背后的原因。

Checklist based Review:使用预定义的检查清单来保持一致性,避免遗漏关键领域。

Rubber duck review:作者向审阅者解释代码的方式,就像在向一只“橡皮鸭”解释代码一样。

Checklist Automation review:结合自动化工具和人工审核,以发现诸如风格违规之类的常规问题。

Two Peas in a Pod:你在对话中评论了一行代码,而另一位贡献者则对同一个拉取请求中的另一行代码提供了反馈。

The Chameleon Review:根据同行的贡献类型调整你的 PR 审核方式。

Teach them Review:审阅者不仅指出了问题,还解释了为什么需要进行这些更改。

Commit-by-Commit Review:每次提交都会单独审核,从而更容易跟踪更改并理解思考过程。

还有更多类似的技术Pattern recognition等等,你可以自己去探索Change impact analysisTrace-based code reading

如果您有兴趣阅读更多内容,以下几个博客值得一看:

一旦你掌握了这些技巧,只需将它们与你的个人经验结合起来,就能让你更好地把握方向。


4. 请求改变,而不是命令改变。

正常的代码审查对话很容易演变成个人意见。

想象一下,你对你的团队成员说:“把那份报告给我,顺便帮我买杯咖啡”,这会显得要求很高,而且也出乎对方的意料。

以命令形式呈现的反馈 以请求形式提出的反馈
审阅者:“将该User类重构为多个较小的类。” 审阅者:“我们能否将该User类重构为多个较小的类?”
作者:“我觉得没必要。现在的课程挺好的。” 作者:“我们可以这么做,但我认为拆分可能会使事情变得过于复杂。您觉得呢?”

如果命令显得更加直接,可能会导致防御性反应。

人们喜欢对自己的工作拥有掌控权。当你提出要求时,会让他们产生一种主人翁意识。

给予反馈时格外温和,并不需要付出十倍的努力,但却能让事情进展得更加顺利。


5. 使用代码审查清单可以让工作变得轻松许多。

采用系统化的方法进行代码审查,可以带来更快、更准确的审查过程。

这就是代码审查规范的概念review checklist。它是一套代码审查员每次审查代码时都要遵循的准则或项目。

你不必从头开始制作,只需下载一个现成的清单,然后根据你的需要进行调整即可。

您可以让它更侧重于您的技术栈,并专注于一些特定领域,例如可访问性或安全性。

它有助于团队成员对哪些事情重要达成共识,并减少代码审查过程中的冲突、分歧或不必要的反复沟通。

例如,如果您正在开发 React 应用,您可能需要加入对 hook 使用情况、组件可重用性或高效状态管理的检查。

团队中的每个人都会对代码审查时需要关注的内容达成共识。随着时间的推移,这将在不影响代码质量的前提下加快审查流程。

Michaela 在 Gumroad 上发布了一款免费产品,其中包含一份不错的清单。

Gumroad产品

您还可以查看GitHub 上获得 900 多个星标的代码审查清单。


6. 避免把时间浪费在语法检查器和格式化工具可以轻松处理的任务上。

在信息爆炸的时代,我们的注意力持续时间正在逐日缩短。

在各种会议、邮件和其他干扰因素的干扰下,很难抽出时间专注于代码。阅读别人的代码会消耗你的精力。

我的建议是不要把时间和精力浪费在电脑可以轻松完成的琐事上。

例如,与其手动向作者解释缩进问题,不如使用一款优秀的格式化工具在几秒钟内解决这个问题。

需要人工审核员付出努力 使用格式化工具需要付出努力
审校人员会检查空格问题并找出错误。 没有什么!
审稿人写了一条注释来解释问题。
审阅者再次核对笔记,确保其清晰易懂。
作者阅读了注释并修改了缩进。
审核人员验证了修复效果。

你也可以将此方法应用于代码审查中的其他重复性任务。以下是一些示例:

任务 自动化解决方案
请检查代码是否符合风格指南。 代码检查工具,例如ESLint(用于 JavaScript)或Pylint(用于 Python)。
检查文档中是否存在失效链接 链接检查工具,例如Markdownlint或 HTML linting 工具
验证代码是否遵循安全最佳实践 类似SonarQubeBrakeman(用于 Ruby on Rails)之类的安全代码检查工具
检查评论中的拼写和语法。 像Code Spell Checkerwrite-good 这样的拼写检查工具适用于 Markdown 文件
确保所有敏感信息(API密钥、密码等)均未硬编码。 类似Git-secretsTruffleHog 的秘密扫描工具
检查项目是否具有足够的测试覆盖率。 代码覆盖率工具,例如Istanbul(JavaScript)或Jacoco(Java)
请检查依赖项是否为最新版本。 依赖管理工具,例如DependabotGreenkeeper。

与其浪费时间纠正基本错误,不如将精力集中在更复杂的问题上。

此外,没有人喜欢听到人犯错,如果是电脑犯错,就更容易让人安心了!

提示:与你的团队合作,在代码审查工作流程中设置自动化检查,例如在 Git 中使用pre-commit hooks或在 GitHub 中使用webhooks


7. 如果剩下的修复工作很简单,就批准。

许多代码审查员认为,只有在所有问题都得到解决之后才能批准代码。这可能会给back-and-forth作者和审查员双方都造成不必要的延误。

如果只剩下一些小问题,例如 atypo或 a,variable name那么要明确说明它们是可选的,以便作者知道这不是批准的条件。

不要因为变量名不够完美就耽误代码的开发。

多花点时间处理那2%的罕见病例,总比给其他98%的病例造成不必要的延误要好得多吧?好好想想。


8. 寻找机会将大型评论拆分成多个部分。

我见过包含 30 多个文件更改和 1000 多行代码的 Pull Request。

一次性审核如此大的改动非常困难。大多数时候,我们这些审核人员最终都会遗漏一些关键内容。

一个合理的解决方案是将大型审阅拆分。与其直接要求作者拆分,不如帮助他们找到合理的分割点。如果修改对文件的影响是独立的,则按文件进行分组。

对于更复杂的情况,您可以找到简单的逻辑,并将其移至单独的变更列表。

如果代码质量差,就明确说明有必要进行拆分。

审查几份杂乱的 300 行变更列表,比审查一份庞大的 600 行代码转储要好得多。


9. 只提供高层次的反馈。

我一直避免一次性给出太多反馈,以免作者感到压力过大。

首先就重大问题提出高层次的反馈意见,例如架构问题、重大漏洞等,这些问题影响最大。

这些问题解决之后,就可以着手处理一些不太重要的细节,例如命名或细微的改动。

这样,作者就可以集中精力先解决最大的问题,而不会被一些可能并不紧急的小事所困扰。


10. 不要忘记,对话的另一端是一个活生生的人。

在时间紧迫的混乱局面下,很容易忘记对话的另一端是一个活生生的人。

🎯 消除偏见。

我们都有潜意识里的偏见, 谷歌最近的一项研究 表明,女性开发者在代码审查中比男性同行更容易受到阻力。这真是令人震惊!

了解这些情况并采取必要的措施(例如对审查进行审查)来减少代码审查中的偏见或任何与偏见有关的事情非常重要。

🎯避免僵局。

代码审查中最糟糕的结果是,stalemate你拒绝在未进行进一步更改的情况下签署变更列表,但作者拒绝进行更改。

讨论的气氛会非常紧张,所以有必要好好谈谈。坦诚简单的沟通就能打破这种局面。

🎯 简洁的音调。

代码审查中避免使用“你”。

你觉得它们之间有什么区别吗?

❌ 能否 将此 变量重命名为更具描述性的名称?

✅ 我们能否 将此变量重命名为更具描述性的名称?

语气上的这个小变化就能产生影响。


11. 表彰优秀代码。

代码审查不一定非得指出错误,它也是一个突出优点的绝佳机会!

比如,说一句“我喜欢你这样解释,这样更容易理解了”,真的很有帮助。一句小小的赞美意义非凡(即使你没有意识到)。

这表明你不仅仅是为了指出错误,而是真正注意到他们做事做得正确的地方。

这不是为了让人们感觉良好,而是为了创造一种积极的氛围,激励他们做得更好。

庆祝


我运用了自己作为开源项目维护者的经验,希望对你有所帮助。

如果您在代码审查过程中有任何反馈或其他需要注意的事项,请告诉我。

祝你今天过得愉快!下次再见 :)

您可以在anmolbaranwal.com
查看 我的作品 感谢阅读!🥰
叽叽喳喳 GitHub 领英

结尾的GIF动画是挥手告别。

文章来源:https://dev.to/anmolbaranwal/11-practical-tips-to-make-code-reviews-easier-as-a-developer-16kc