Git 在代码处于活动开发状态时重构代码

Git 在代码处于活动开发状态时重构代码,git,refactoring,Git,Refactoring,嗯,这是一个常识性的问题,我确信这是不可能的,但我和我的队友进行了一场辩论,他们今天说这是可能的,并希望有经验的领导提供意见 是否可以重构处于活动开发中的代码 下面是一个场景 您正在重构函数A,作为主动开发的一部分,您的队友正在处理函数A并添加更多的代码行。您正在使用git,因此重构后的函数_A将与您的队友更新后的函数_A合并,比如说,15行随机分布的新代码是作为活动开发的一部分添加的 如果遇到您描述的情况,那么您肯定需要重构 在大多数情况下,您的代码应该始终处于两个人编辑同一函数的概率趋于零的

嗯,这是一个常识性的问题,我确信这是不可能的,但我和我的队友进行了一场辩论,他们今天说这是可能的,并希望有经验的领导提供意见

是否可以重构处于活动开发中的代码

下面是一个场景


您正在重构函数A,作为主动开发的一部分,您的队友正在处理函数A并添加更多的代码行。您正在使用git,因此重构后的函数_A将与您的队友更新后的函数_A合并,比如说,15行随机分布的新代码是作为活动开发的一部分添加的

如果遇到您描述的情况,那么您肯定需要重构

在大多数情况下,您的代码应该始终处于两个人编辑同一函数的概率趋于零的状态。两个人编辑同一个文件的可能性应该很小。在编写良好的代码库中,一个新特性意味着一个新文件,因为它是一个新特性,为什么它会与旧特性混合在一起

其次,一般来说,你应该重构你正在做的事情。因为您正在进行这项工作,所以您是知道如何重构代码的最佳人选。不要盲目地扫描整个代码库,寻找需要重构的东西,除非你没有其他事情要做

最后,根据您询问的对象,15行代码应该是一个完整的函数。有些人认为在函数中添加15行是没有意义的,因为15行本身就是一个函数。但并非所有人都这么想。尽管如此,这是一个很好的经验法则,即使你没有100%的时间遵循它


因此,在主动开发中重构代码是完全可能的。事实上,测试驱动开发背后的理念意味着您总是重构正在编写的代码。编写代码的三个步骤甚至被称为红绿重构,您应该每5到10分钟循环一次红绿重构。但是按照您描述的方式进行操作当然会导致很多合并冲突。

Git可能无法为您手动合并更改,您可能需要花时间一起了解如何合并这两个更改。也就是说,应该有一些适当的流程来防止这种情况,即一个人正在重构另一个人正在积极开发的代码;这听起来不像是在有效利用你的团队。这将在代码审查阶段更有效地完成。