在进行软件开发项目时,维护干净且有组织的版本控制历史至关重要。开发人员面临的一个常见困境是是否为实现和单元测试创建单独的提交,或者将它们合并为一个提交。我有兴趣了解每种方法的优点和缺点。
请分享您的经验和见解,了解您喜欢哪种方法及其原因,以及您遵循的任何最佳实践,以确保简化且高效的版本控制工作流程。
我的研究成果:
单独提交(实现和单元测试单独提交):
优点:
隔离更改:它将代码更改和测试分开,这样可以更轻松地理解对代码库所做的各个更改。 审查过程:单独提交可以使代码审查过程更加简单,因为审查者可以独立关注特定的更改。 恢复更改:如果实施或测试出现问题,则更容易仅恢复相关部分而不影响其他部分。 更清晰的历史记录:它提供了清晰的提交历史记录,使跟踪更改和了解代码库的演变变得更加容易。
缺点:
不一致:如果实现和测试紧密耦合,如果一个在另一个之前提交,则单独提交可能会导致不一致。 额外提交:它可能会在版本历史记录中引入额外提交,这可能被一些开发人员视为噪音。
原子提交(在一次提交中一起实现和单元测试):
优点:
一致性:原子提交确保实现及其相应的单元测试始终保持同步。 简单性:它减少了历史记录中的提交数量,使其更清晰、更易于遵循。 持续集成:当一起提交时,CI/CD 系统可以通过相应的测试自动验证实施。
缺点:
审查复杂性:这可能会使代码审查更具挑战性,因为审查者需要同时评估实施和测试更改。 恢复更改:如果需要恢复,它将恢复实现和测试,这可能并不总是需要的。
先提交单元测试,然后再提交实现的优点是,您可以有一个中间状态,在该状态下,您可以证明没有实现的单元测试失败,而实现使其通过,即单元测试实际上测试了实现。