跳转至

避免范围蔓延

当单个贡献所解决的问题或实现的功能大大超出工作开始时的预期时,就会发生 "范围蠕变"。你从一个简单的问题开始;你发现了一个密切相关的问题,并决定将该修复也包括在内;然后是第三个......不知不觉中,你的拉取请求已经关闭了 5 个问题,增加了 3 个新功能,包括数十个文件。

范围蠕变每个人都会遇到。对于经验丰富的开发人员来说,这是一个再熟悉不过的概念;我们都曾多次遇到过,并经历过随之而来的所有问题。

避免范围蠕变有非常实际的原因。贡献越大,工作就越困难。识别边缘情况或潜在问题变得更加困难,这意味着稿件的整体质量可能会下降。当评审者需要处理多个可能互不相关的背景时,评审也会变得更具挑战性。更大的贡献意味着更多的评审意见,作为贡献者,要跟踪多个评审线程可能会变得很困难。甚至您的 GitHub 体验也会受到影响–随着 PR 的大小增加,GitHub 的用户界面也会变慢,这意味着通过 GitHub 界面浏览文件和尝试留下审核意见会变得越来越困难。

任何时候,如果您发现有理由在您的贡献中添加任何不属于原始提案或错误报告明确部分的内容,您就应该考虑您是否正在走向范围蠕变。是否有两个不同的功能可以分开实现?某个功能在实现时是否会有已知的限制或错误,并在后续的拉取请求中修复该错误?错误修复的一部分是否独立于另一部分?如果可以在不改变原始贡献的情况下省略部分变更,那就应该省略。

软件开发始终是一个渐进改进的过程。每个人的贡献都应使代码库在合并后处于更好的状态,但留下错误或部分功能作为未来改进的工作也是完全可以接受的。这可能意味着将一个拉取请求分解成多个部分,以便独立审核,或者记录一个问题,以便其他人可以调查并解决问题。

限制每次投稿的范围对包括你在内的每个人都有帮助。您的审稿人,甚至您自己,都会对此表示赞赏。