人们总是关心为什么做多过于做了什么,这种观念同样出现在写Git Commit的信息上。下面是我总结出来的写提交信息的最佳实践(听烂了都)。
黄金环路
我最近重看了一次最喜欢的TED演讲,由Simon Sinek主讲,主题是《如何鼓舞士气》。
他解释了一个非常简单的观念:人们关心领导者为什么做,而不是做什么。这大概也适用于Git的提交信息。
Simon画了上面这张图(要比我画的好的多),解释道:伟大的公司有明确的愿景并且真的在实现它。回到我们的代码,每段代码都有自己的意图,我们要做的就是如何实现它。
为什么这么做?
你可能觉得奇怪,这有什么大不了的?是不是扯远了。如果你曾经在一个团队工作过,或者经历过一个长期的项目,在查阅之前的代码时,经常会搞不懂为什么那么写。于是你使用git blame一路查找到提交信息,让人焦虑的是,最终你只会发现:这段代码和提交信息不是你写的。其实你是想知道当初为什么这么写?
更进一步,我见过的绝大多数提交信息都有这个问题,也包括我在内,不久前,还在为我的提交信息洋洋自得,因为每次写之前,我都会仔细考虑,怎么让它尽可能的简单明了。
惊喜时刻
一天,我正和Craig Savolainen(导师&我认识的最佳开发者)结队编程,我写了一段自以为很像样的提交信息,而他说这没用并解释道:
Anyone can see WHAT you did just by looking at the code. But the code can never tell someone WHY you did it.
代码可以告诉别人你做了什么,但不能告诉别人你为什么这么做。
对啊!我立即使用新的风格来写提交信息,不过这需要一些时间来适应,因为提交前,我总是在想这段代码的目的什么,为什么要这么做,这的确很费脑力。好消息是我适应了,已经变得流畅自然了,我发现了一个模式,就是使用“should”。
示例
下面是一个实例。我用”做什么风格“写了提交信息:
Card view controller added.
如果我用“为什么做”风格重写呢?
User should be able to see the card before editing it.
在编辑前,用户应该先查看。
看到了吗?重写后的版本很容易看出这次提交原因以及一些上下文信息,这对以后维护这些代码的人是很有价值的。当他有问题的时候,就会找到我。同时这对我也有利,当重新阅读之前写的代码时,能帮助我想起提交时的场景!
结论
写提交信息的时候,用“为什么做”替代“做什么”对自己和团队都是有益的。在通往软件工匠的道路上,小的进步汇集起来都将是一大步。如果你认同或者有更好的想法,请与我们联系。
Happy exploring!
旁注
很明显,这里虽然以Git为例子,但同样适用于其它版本控制系统。我原本想使用“code commit”,但是经过大家的反馈,我决定用“Git commit”,看起来更明了些。