DRY原則:識別模式並抽象概括 - javierdearcos
DRY 來自“Don't Repeat Yourself”的首字母縮寫詞,是最普遍的開發原則之一。它是由Andy Hunt和Dave Thomas在他們的書The Pragmatic Programmer中創造的。
DRY不是簡單的“不要重複自己!”,它的關鍵是識別一種模式並用理想的抽象級別對其進行概括。
DRY 源於複製知識的危險,這意味著在發生變化時,我們必須記住複製該知識的所有位置上下文,否則我們將陷入系統中的不一致。完整的原理是:
每一條知識都必須在系統中具有單一、準確和完整的表示。
如果我們堅持完整的原則,我們將對 DRY 代表什麼有更清晰的瞭解,但如果我們只堅持首字母縮略詞,我們將錯過許多細微差別,這會使我們過於簡單化它的含義。
在某些情況下,我們會以隨意的方式發現相同的程式碼,但很明顯它會以不同的方式發展。這裡提取公共程式碼是錯誤的。或者程式碼看起來屬於不同的情況,因為它的命名和結構方式不同,但隱藏了相同的模式。在這種情況下,我們將不得不對其進行抽象。
DRY 的關鍵是識別一種模式並用理想的抽象級別對其進行概括,以便它對我們所有的情況都有用。
重要的是要意識到過早抽象的危險,並且複製程式碼通常比建立錯誤的抽象更可取。
每次提取公共程式碼時,您都會在系統的不同部分和/或不同計算機之間建立依賴關係。因此,有必要分析這種依賴是否有意義,以及它可能帶來的問題是否值得。
也有可能在提取此公共程式碼時,您必須以 API 的形式將其公開,以便不同的模組和/或團隊可以使用它。在這裡,您將被繫結到維護 API 的契約,以免破壞可能使用它的其他團隊或客戶的程式碼,因此您必須非常確信它是正確的抽象。
由於這些原因和程式碼之外的其他原因,不重複程式碼可能並不總是一個好主意。
相關文章
- java 設計模式6原則 介面,抽象類區別Java設計模式抽象
- DRY原則的一個簡單實踐
- 通俗簡潔概括設計模式的七大原則的宗旨設計模式
- 迭代器設計模式知識概括設計模式
- 觀察者設計模式知識概括設計模式
- 直譯器設計模式知識概括設計模式
- 備忘錄設計模式知識概括設計模式
- 《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則JavaScript設計模式
- HTML知識概括HTML
- Python知識概括Python
- DRY原則與微服務的矛盾:共享複用會導致耦合 - AllenHolub微服務
- Java中的介面與抽象類設計原則Java抽象
- Python中的識別符號有哪些基礎原則?Python符號
- 基本的設計模式概括設計模式
- 設計原則 設計模式設計模式
- 【設計模式】設計原則設計模式
- 設計模式 - 設計原則設計模式
- 設計模式六大原則(六)----開閉原則設計模式
- 設計模式必備知識點---六大設計原則設計模式
- 【架構設計】保持簡單輕量設計的三個原則——DRY,KISS, YAGNI架構
- 設計模式的七大原則(5) --開閉原則設計模式
- 設計模式六大原則(四)----介面隔離原則設計模式
- 設計習慣比較:高凝聚/松耦合、DRY/錯誤抽象 - Jesse抽象
- C++設計模式的原則C++設計模式
- 設計模式的設計原則設計模式
- 設計模式:介面隔離原則設計模式
- 設計模式的七大原則(4) --里氏替換原則設計模式
- 設計模式的七大原則(2) --介面隔離原則設計模式
- 設計模式六大原則(二)----裡式替換原則設計模式
- 設計模式六大原則(一)----單一職責原則設計模式
- Python設計模式的六大原則分別是什麼?Python設計模式
- 使用者識別規則
- 瞭解模式識別模式
- 設計模式的七大原則(1) --單一職責原則設計模式
- 設計模式 -- 設計模式七大原則設計模式
- 抽象工廠模式抽象模式
- JavaScript設計模式(一)設計原則JavaScript設計模式
- 設計模式之7大原則設計模式