今天谈一个编程世界非常基本的原则,它有多基本?可能在我说出这个概念前,你已经不自觉的应用多年。那就是DRY原则,Don’t Repeat Yourself,直译就是不要重复你自己。
简单来讲,写代码的时候,如果出现雷同片段,就要想办法把他们提取出来,成为一段独立的代码。这样的抽象,可以保证任何调用这段代码的程序都能得到一致的结果;同时在需要修改时也能保证所有调用处都能获得更新。
举个例子,新年将至,在年底你免不了要发一大堆祝福短信。最简单粗暴的方法,就是给每个人编辑一条新信息,然后一字一句把祝福输入。此处应用DRY原则,在给第一个人编辑后,你复制整段文字,给其他人发送时直接粘贴发送。如果进一步抽象,你会写一个不含对方个人特征的祝福,同时群发给许多人。简化重复劳动,是DRY最直观的应用。
有时候看来,这个原则很简单,是实话,更像是废话。但是即使是废话,我们也需要这个原则,对于高楼大厦,越是底层,越是重要。
在实际应用中,可以参考《重构》(Refactoring)中说的三次原则(Rule of three),即同样的代码将要出现第三次前,考虑抽象它。至于什么是抽象,如何抽象,怕是写上一年也写不完。
违背DRY原则的代码,程序员称之为WET(直译:潮湿,因为DRY是干燥的意思)的,可以理解为Write Everything Twice(任何东西写两遍),We Enjoying Typing(我们享受敲键盘)或Waste Everyone’s Time(浪费所有人的时间)。
大家感受一下来自程序员的冷幽默。
注:DRY原则理论上来说是没有问题的,但在实际应用是切忌死搬教条。它只能起指导作用,没有量化标准,否则的话理论上一个程序每一行代码都只能出现一次才行,这是非常荒谬的。