如何让你的代码更快得到审查

276 阅读7分钟

开发人员和代码审查人员的目标似乎是相互冲突的:开发人员希望快速发布他们的代码,审查人员希望有高的代码质量。但我认为这是同一个目标的两面:通过发送高质量和可维护的代码来保持高开发速度。评审员希望帮助开发者减少生产中的bug,并使代码更容易理解,以便更快地进行功能改进。

通过遵循这些建议,你可以减少代码审查迭代的次数,并更快地交付更好的代码。

在你开始之前

每个团队都有自己的标准和最佳实践。在好的团队中,它们被很好地记录下来。提前阅读这样的文档将为你节省许多代码审查的迭代时间。

如果你是一个团队、技术栈或代码库中的一个区域的新手,更有经验的人配对可能是一个学习和更快完成任务的好方法。

把大任务分成几个不同的部分。仅仅阅读1000行代码就需要一个评审员花费一个多小时和一杯咖啡的时间。而每次迭代又需要一个小时。很难说一个差异什么时候变得太大,但一般的经验法则是:你的经验越少,你的差异就应该越小。

通过把一个大任务分成小任务,你可以更快地得到反馈,在你花太多时间在一个不理想的实现上之前。如果你在开始工作之前和一个更有经验的开发者讨论如何实现一个复杂的功能,那就更好了。

确保你的代码已经准备好了

在把你的代码送去审查之前,检查它是否有调试代码、注释过的代码和TODO ,确保各种自动测试、类型检查和linters都通过。确保没有新的lint警告,如果你使用的是Prettier这样的工具,那么代码是有格式的。

人工代码审查对于改善可读性、架构或可访问性是非常好的。当审查员因为抓错别字和本来可以通过自动检查抓到的小问题而分心时,他们更有可能错过重要问题。

做一个自我审查

想一想阅读代码的人可能不清楚什么,他们可能有什么样的问题,如果他们不知道你对这个任务的所有了解。回答这些问题,使代码更加清晰,或者加入注释,解释为什么要写一些代码,为什么要用某种方式写。

如果有明显的更简单的替代方案对你的情况不起作用,请解释原因。

这类修改和注释会帮助每个要读代码的人,而不仅仅是代码审查员。好的注释也可以使你的代码免于意外的 "重构",使代码更简单,但却去掉了重要的功能,因为不清楚为什么需要这些 "额外 "的代码。

显示你做了什么

看看差异中的代码究竟在做什么,会有很大的帮助。解释为什么需要这些代码,它试图解决的问题是什么。提到相关的票据,为你所有的修改添加屏幕截图甚至GIF。

Tip Kap是一个不错的免费应用,可以在macOS上录制GIF。

提出问题

代码审查是开发者之间分享知识的一个很好的方式。它在两个方向上发挥作用:从审查者到开发者,以及从开发者到审查者。代码审查是一种对话,在这种对话中,两个人,有时是更多的人,共同致力于改进一段代码。为了使它发挥作用,你需要理解每一条评论和它背后的理由。

不断提问,直到一切都清楚了:为什么有些东西是个问题,建议的解决方案是什么。代码审查意见并不总是进行长时间讨论的最佳场所,有时在Slack中或当面与你的审查者交谈会更好。把这种讨论的简短摘要作为评论添加到你的diff中是个好主意。

现场审查可以是另一种改善沟通的方式。在这种情况下,开发人员和审查员将坐在一起,仔细检查代码。评审员会详细解释所有的问题,确保没有误解。

不要为了修改而修改

评审员并不像你那样了解你的任务,所以他们的一些建议对你的工作没有任何意义。没有规则说代码审查员总是对的,除非是团队的标准,即使是标准有时也有例外。有些建议听起来不错,但在现实中并不可行。

使用你自己的判断,如果你发现这些改动并没有改善代码,就不要做。解释一下为什么你认为这个建议对你不起作用。

即使你已经做了修改,但不喜欢其结果,也要在下一次评审之前将其恢复。一个好的评审员很可能也会注意到这一点,并要求你恢复这个改动。

不要忽视评论

你不必同意代码审查员所说的一切,也不必应用他们所有的建议,但如果你忽视了一些评论,代码审查员很可能会再次写下它。

如果你不打算做某个特定的建议,或者已经尝试过,但没有成功,请在回复评论的时候做一个简短的解释,以避免任何可能的误解。

清楚地说明你何时完成了修改

每个开发者的工作方式都不一样:有的会一次性提交所有的修改,有的会单独提交每个修改。评审员很难知道你什么时候完成了他们所有的反馈并准备好进行另一次迭代。

写一个简短的评论,如 "准备好进行另一次迭代",就会很清楚,而且你会更快得到另一次迭代。然而,不要在每条代码评论上写 "完成"--这只会给评论者的收件箱带来垃圾邮件,但不会给他们一个明确的指示,什么时候可以再次对代码进行审查。

做好下一步工作

开发是一个迭代的过程,代码审查也是如此。代码审查的建议是对代码当前状态的可能改进,而不是其最终状态。通常一个改进会使另一个改进变得很明显,一个好的审查员会建议这个改进。

但你不必等待并失去另一个迭代:再做一次自我审查,看看什么可能是下一个事情。

例如,一个评审员要求你简化三个函数,使代码更加一致。但在你做了之后,现在很清楚,这三个函数都在做同样的事情,你可以用一个函数来代替它们。

结论

不要把代码审查当作一种干扰。他们是来帮助你发布更好的代码,并在未来的修改中花费更少的时间。帮助审查员帮助你。

开始自己审查别人的代码,即使你不能批准它。通过阅读更多的代码并思考如何让它变得更好,你会提高自己的编码技能。