代码评审与协作

代码合并前,多一双眼睛看。 自己写的代码容易「脑补」逻辑、忽略边界;别人从零读一遍,能发现 bug、可读性问题和设计偏差。Code Review(代码评审)就是在合并前由他人审查代码,目的不仅是「抓错」,还有知识传播(大家了解这块怎么做的)和风格一致(团队共识通过 Review 落地)。本章讲 Code Review 的目的(质量、知识传播、一致性)、评审清单与礼仪异步评审与同步讨论,以及如何写反馈、如何接收反馈

一、Code Review 的目的:质量、知识传播、一致性

质量:发现逻辑错误、边界遗漏、性能隐患、安全漏洞。作者容易「以为对了」;评审者以读者视角看,常能揪出「这里没判空」「那里会 N+1」等问题。知识传播:评审让更多人接触这段代码,新人能通过看 PR 学业务和实现;作者在写描述和回复评论时也会把设计说清楚,形成可追溯的讨论。一致性:命名、结构、错误处理方式等,通过 Review 统一到团队约定,避免各写各的、后期难以维护。

质量
发现 bug、边界与安全隐患;多一双眼睛减少遗漏。
知识传播
更多人理解改动与设计;PR 与讨论成为活文档。
一致性
命名、风格、架构选择与团队约定对齐。
Code Review 的三大目的
典型评审流程:提交 PR → 评审者审查 → 反馈与修改 → 通过后合并

二、评审清单与礼仪

评审时「看什么」可以靠清单不遗漏:逻辑是否正确、边界与异常是否处理、是否有重复代码或可读性问题、命名与注释是否清晰、是否与现有架构和规范一致、测试是否足够、是否有明显性能或安全问题。团队可以把清单写进文档或 PR 模板,新人也能按图索骥。

礼仪:评审是协作,不是审判。评论要就事论事——指出「这段在 XX 情况下会怎样」而不是「你怎么写的」;分清楚建议与必须——必须改的明确说「请修改」,可选的说「建议」或「可以考虑」;肯定好的地方——设计清晰、测试到位时点个赞,对方更容易接受批评;及时响应——作者等 Review 时卡着,尽量在约定时间内(如 24 小时内)给第一轮反馈。

评审时可看的要点(示例清单)

  • 逻辑与边界:正常路径与异常路径是否都正确?空值、越界、并发是否考虑?
  • 可读性:命名、注释、结构是否容易理解?是否有重复可抽取?
  • 一致性与规范:是否符合团队命名、目录、错误处理约定?
  • 测试:改动是否有对应测试?关键路径是否覆盖?
  • 安全与性能:是否有明显漏洞或低效实现?

三、异步评审与同步讨论

异步评审:评审者在 PR 上留言,作者稍后看、改、回复;不必同时在线。适合分布式团队、跨时区、或希望留下书面记录。要点:PR 描述写清「改了什么、为什么、如何验证」,方便评审者快速进入;评论尽量具体到行或段落,避免「这里有问题」却不说哪里。

同步讨论:作者与评审者实时沟通(当面、视频、语音),一起过一遍代码。适合复杂设计、争议点、或需要快速对齐时。可以「先同步讲清背景与设计,再异步细看 diff」;讨论结论最好在 PR 里补一句总结,方便后来人看。

异步评审
PR 留言、作者择时回复与修改。留痕清晰、不要求同时在线;PR 描述与评论要具体,避免来回猜。
同步讨论
实时一起过代码,适合复杂设计或需快速对齐。讨论结果可在 PR 里补一句,便于追溯。
异步与同步两种方式可结合使用

四、如何写反馈、如何接收反馈

写反馈时:说清「问题是什么、为什么是问题、建议怎么改」(若一眼能改的可以直接给建议代码);用疑问句代替断言有时更温和(「这里是否考虑过 XX 情况?」);区分「必须改」与「建议」;一次 PR 不要堆太多「建议」,优先关键问题,否则作者容易疲。

接收反馈时:把 Review 当成「一起把代码变好」,而不是被挑刺。有疑问就回复问清楚;不认同可以说明理由、讨论取舍;认同就改并简短回复「已改」或「采纳」;改完记得通知评审者,方便对方确认。若反馈很多,可以分批改、分批请对方再看,避免一次改到天荒地老。

写反馈

  • 说清:问题是什么、为什么、建议怎么改
  • 区分「必须改」与「建议」
  • 肯定做得好的地方
  • 具体到行或段落,避免笼统

接收反馈

  • 当成「一起变好」,不必防御
  • 有疑问就问,不认同可讨论
  • 改完回复或 @ 评审者确认
  • 反馈多时可分批改、分批请看
给出与接收反馈的要点

一句话: Code Review 的目的包括质量(发现 bug 与隐患)、知识传播(更多人理解改动)、一致性(与团队约定对齐)。用评审清单保证不遗漏要点,用礼仪保证协作顺畅(就事论事、区分必须与建议、及时响应)。异步留痕、同步讲清复杂点;写反馈要具体、接收反馈要开放,改完及时确认。

小贴士: PR 描述里写上「如何验证」(例如「本地跑 XX 接口、点 YY 页面看 ZZ」),评审者可以按步骤检查,作者自己也能在合并前再走一遍,减少「合并后才发现漏测」。

五、小结

Code Review 目的:质量、知识传播、一致性。用评审清单(逻辑、可读性、规范、测试、安全等)和礼仪(就事论事、区分必须/建议、肯定好的、及时响应)让 Review 高效且友好。异步评审适合留痕与分布式,同步讨论适合复杂设计与快速对齐。写反馈要具体、分必须与建议;接收反馈要开放、改完确认。下一章讲文档与注释:何时写、写什么,把「文档类型、注释原则、文档即代码」说细。