童子军规则
本文翻译自"The Boy Scout Rule",来自于《程序员应该知道的97件事》一书中的某个章节。
童子军有一条规则:“永远保持离开时的露营地比你发现它时更整洁”。如果你在地面上发现了脏东西,那么无论是否是你留下的,你都要将它清理干净。你有意地为下一组露营者改善环境。(实际上,由童子军之父罗伯特·斯蒂芬森·史密斯·贝登堡编写的原版规则是这样的:“尝试让这个世界在你离开时比你发现它时变得更美好。”)
如果我们在代码中遵循的这样一条类似的规则:“总是保持提交时的代码比Check Out时更整洁”?无论谁是代码的原作者,如果我们总是努力去改进模块,无论模块有多么小?结果会是怎样的呢?
我想如果我们大家都遵循这一简单的规则,我们将看到那些残酷地软件系统恶化腐朽的终结。相反,我们的系统将逐渐变得越来越好。我们也将看到整个团队将系统作为一个整体来完善,而不是每个人仅仅关心属于他们自己的那小部分。
我不认为这条规则的要求有过分之处。在你提交(check in)代码之前,你不必使每个模块都变得很完美。你只需使这些模块比check out它们时有一些改善即可。当然,这就意味着你添加到模块中的新代码必须是整洁的。同时它还意味着在你将代码提交回代码库之前,你至少整理了另外一处代码。你可能只是简单的改善了变量的命名,或者将一个冗长的函数拆分成两个短小简洁的函数。你可能打破了一个循环依赖,或者是增加一个接口以解除策略和细节之间的耦合。
坦率地说,这对我来说就像是一个再常见不过行为了-就像是便后洗手,或者将垃圾放入垃圾桶而不是随意丢到地板上一样。事实上,在代码中留下混乱应该与乱丢垃圾一样是不被接受的。它应该是一些不合乎规矩的行为。
不过,不仅仅是这些。照顾好自己的代码是一回事。照顾好团队的代码则是另外一回事。团队成员间相互帮助并且相互整理代码。他们遵循童子军规则,因为这不仅仅对自己有益,它对团队中的每个人都有益。
By Uncle Bob
评论