今天談一個編程世界非常基本的原則,它有多基本庸娱?可能在我說出這個概念前屏轰,你已經(jīng)不自覺的應(yīng)用多年。那就是DRY原則,Don’t Repeat Yourself,直譯就是不要重復(fù)你自己。
簡單來講肯污,寫代碼的時候,如果出現(xiàn)雷同片段吨枉,就要想辦法把他們提取出來蹦渣,成為一段獨立的代碼。這樣的抽象貌亭,可以保證任何調(diào)用這段代碼的程序都能得到一致的結(jié)果柬唯;同時在需要修改時也能保證所有調(diào)用處都能獲得更新。
舉個例子圃庭,新年將至锄奢,在年底你免不了要發(fā)一大堆祝福短信失晴。最簡單粗暴的方法,就是給每個人編輯一條新信息拘央,然后一字一句把祝福輸入涂屁。此處應(yīng)用DRY原則,在給第一個人編輯后灰伟,你復(fù)制整段文字拆又,給其他人發(fā)送時直接粘貼發(fā)送。如果進一步抽象栏账,你會寫一個不含對方個人特征的祝福遏乔,同時群發(fā)給許多人。簡化重復(fù)勞動发笔,是DRY最直觀的應(yīng)用。
有時候看來凉翻,這個原則很簡單了讨,是實話,更像是廢話制轰。但是即使是廢話前计,我們也需要這個原則,對于高樓大廈垃杖,越是底層男杈,越是重要。
在實際應(yīng)用中调俘,可以參考《重構(gòu)》(Refactoring)中說的三次原則(Rule of three)伶棒,即同樣的代碼將要出現(xiàn)第三次前,考慮抽象它彩库。至于什么是抽象肤无,如何抽象,怕是寫上一年也寫不完骇钦。
違背DRY原則的代碼宛渐,程序員稱之為WET(直譯:潮濕,因為DRY是干燥的意思)的眯搭,可以理解為Write Everything Twice(任何東西寫兩遍)窥翩,We Enjoying Typing(我們享受敲鍵盤)或Waste Everyone’s Time(浪費所有人的時間)。
大家感受一下來自程序員的冷幽默鳞仙。
注:DRY原則理論上來說是沒有問題的寇蚊,但在實際應(yīng)用是切忌死搬教條。它只能起指導(dǎo)作用繁扎,沒有量化標準幔荒,否則的話理論上一個程序每一行代碼都只能出現(xiàn)一次才行糊闽,這是非常荒謬的爹梁。