约定式提交不能拯救你的提交信息
探讨为什么仅仅遵循约定式提交不足以写出好的提交信息,并介绍了一些关键的思维策略来改善你的开发过程,自然地创造有意义的提交。
在互联网上快速搜索会发现大量教你如何写提交信息的文章。这些文章中有 90% 告诉你要使用约定式提交。然而,许多开发者仍在为此挣扎。他们知道应该遵循这些约定,但在实践中应用它们很困难。每次提交代码时,他们都会纠结于到底是写“重构”还是“杂务”。我甚至见过一些项目的提交信息列表完全由相同的信息组成:“特性:添加页面”,因为对他们来说,写提交信息太具挑战性,他们干脆放弃了。
现在谈论约定式提交还为时尚早
我不是说约定式提交不好。它们有许多众所周知的好处:
- 它们提供了统一的格式,使提交信息更加标准化
- 它们易于自动化工具解析,支持自动生成变更日志
- 它们帮助团队成员理解代码更改的目的和范围
- 它们允许快速识别不同类型的代码更改
然而,当开发者即使使用了约定式提交仍然难以写出好的提交信息时,仅仅向他们抛给一篇关于如何使用约定式提交的文章,教他们“feat”类型是什么意思,“fix”类型是什么意思,其实毫无意义。这就像没有教会某人如何使用基本材料和工具,就给他们一本高级食谱。但这样的文章在互联网上比比皆是。却鲜有人知道,只有当开发者有了清晰的思维和精准分割任务的能力时,约定式提交才能真正发挥作用。
所以,约定式提交不是不好,但在我们谈论它之前,我们需要建立正确的开发心态,并用科学的开发者思维来做事。
写好提交信息的关键思维
代码更改应该一次做一件事情
在软件开发中,“一次做一件事”是一个重要的原则。这不仅适用于写代码,也适用于提交代码。当我们专注于一次完成一个具体任务或更改时,我们的代码变得更清晰,我们的意图更明确。这个方法不仅提高了代码的可读性,还大大简化了代码审查过程。审查人员能够更容易地理解和核实每项更改的目的。
更重要的是,这种方法为潜在的代码回滚提供了便利。如果出现问题,我们可以更容易地定位和恢复特定的更改,而不会影响到其他无关的部分。最重要的是,当每个更改只做一件事情时,描述该更改的提交信息自然变得更加准确和有意义。
在实践中,这意味着我们在开始编码之前需要明确定义要完成的任务。在完成一个任务后,我们应该立即提交代码,而不是等到多个任务完成后再一起提交。如果我们在完成当前任务时发现其他需要修改的地方,最好的做法是记下来并在完成当前任务后单独处理这些修改。例如,当你正在实现一个功能时,发现了一些现有的错误,你不应该立刻在新功能代码中修复错误,而是应该先实现这个功能,然后在另一个提交中修复发现的错误,或者先修复错误再提交功能。