DRY原則:識別模式並抽象概括 - javierdearcos

banq發表於2021-10-17

DRY 來自“Don't Repeat Yourself”的首字母縮寫詞,是最普遍的開發原則之一。它是由Andy Hunt和Dave Thomas在他們的書The Pragmatic Programmer中創造的。

DRY不是簡單的“不要重複自己!”,它的關鍵是識別一種模式並用理想的抽象級別對其進行概括。

DRY 源於複製知識的危險,這意味著在發生變化時,我們必須記住複製該知識的所有位置上下文,否則我們將陷入系統中的不一致。完整的原理是:

 

每一條知識都必須在系統中具有單一、準確和完整的表示。

如果我們堅持完整的原則,我們將對 DRY 代表什麼有更清晰的瞭解,但如果我們只堅持首字母縮略詞,我們將錯過許多細微差別,這會使我們過於簡單化它的含義。

 

在某些情況下,我們會以隨意的方式發現相同的程式碼,但很明顯它會以不同的方式發展。這裡提取公共程式碼是錯誤的。或者程式碼看起來屬於不同的情況,因為它的命名和結構方式不同,但隱藏了相同的模式。在這種情況下,我們將不得不對其進行抽象。

DRY 的關鍵是識別一種模式並用理想的抽象級別對其進行概括,以便它對我們所有的情況都有用。

重要的是要意識到過早抽象的危險,並且複製程式碼通常比建立錯誤的抽象更可取。

每次提取公共程式碼時,您都會在系統的不同部分和/或不同計算機之間建立依賴關係。因此,有必要分析這種依賴是否有意義,以及它可能帶來的問題是否值得。

也有可能在提取此公共程式碼時,您必須以 API 的形式將其公開,以便不同的模組和/或團隊可以使用它。在這裡,您將被繫結到維護 API 的契約,以免破壞可能使用它的其他團隊或客戶的程式碼,因此您必須非常確信它是正確的抽象。

由於這些原因和程式碼之外的其他原因,不重複程式碼可能並不總是一個好主意。

​​​​​​​

 

相關文章