童子军规则
童子军有一条规则:“让营地比你刚来时更干净。”如果看到地上有垃圾,不管是谁扔的,都要清理。这样你就有意地为下一批来宿营的人改善了环境。事实上,这条规则的最初说法是“让世界比你刚来时更美好”,出自罗伯特·贝登堡,童子军之父。
我们在编程时也遵守一条类似的规则会怎么样呢?“尝试让模块在提交时比你检出时更干净”。不管原作者是谁,如果我们努力去改进模块,不管是多么小的改进,这会出现什么样的结果呢?
我想如果我们都遵从这条简单的规则,我们的软件系统就再也不会持续变坏了。取而代之的是,系统在发展的同时会逐渐变得更好。我们也会看到团队们关心整体的系统,而不是各自只关心自己负责的一小部分。
我认为这条规则没有要求太高。并不需要你在提交时要让每个模块都完美无瑕,只需要简单地让它比你检出时要好一点点就可以了。当然,这意味着你给模块增加的任何代码都是干净的,同时你要至少清理一处其它的地方再提交。你可能只简单地改进了一个变量的名字,或者将一个很长的函数分解成两个较小的。你可能是突破了一个循环依赖,或者增加了将策略和详情分离的接口。
坦白地说,这对我来说就像是公共礼仪——如同上厕所后要洗手、把垃圾放进垃圾桶而不是乱扔在地上。搞乱代码的行为应该向乱扔垃圾一样不被社会接受,是不妥当的。
但是还不仅如此。注意自己的代码是一回事,关心团队的又是另一回事。团队成员要互助,互相清理代码,他们遵从童子军规则,因为那对每个人都很好,而不仅是对自己好。
原文:The Boy Scout Rule by Uncle Bob