一次且僅一次
外觀
![本頁使用了標題或全文手工轉換](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
(重新導向自DRY)
![]() | 此條目需要精通或熟悉電腦科學的編者參與及協助編輯。 (2021年9月26日) |
一次且僅一次(英語:Once and only once,簡稱OAOO),又稱為Don't repeat yourself(不要重複你自己,簡稱DRY),或一個規則,實現一次(One rule, one place)是物件導向程式設計中的基本原則,程式設計師的行事準則。旨在軟件開發中,減少重複的資訊。
DRY的原則是「系統中的每一部分,都必須有一個單一的、明確的、權威的代表」,指的是(由人編寫而非機器生成的)代碼和測試所構成的系統,必須能夠表達所應表達的內容,但是不能含有任何重複代碼。當DRY原則被成功應用時,一個系統中任何單個元素的修改都不需要與其邏輯無關的其他元素發生改變。此外,與之邏輯上相關的其他元素的變化均爲可預見的、均勻的,並如此保持同步。
起源
[編輯]其起源已經不可考,一般認為這個原則最初由Andy Hunt和Dave Thomas在他們的書The Pragmatic Programmer[1]中提出。因為極限編程方法的創始者之一肯特·貝克總結和宣傳而使其廣為人知。
DRY與WET
[編輯]違反DRY原則的解決方案通常被稱為WET,其有多種全稱,包括「Write everything twice」(把每個東西寫兩次)、「We enjoy typing」(我們就是喜歡打字)或「Waste everyone's time」(浪費大家的時間)。
- Imposed duplication:開發者認為不得不的重複
- Inadvertent duplication:開發者沒有意識到的重複
- Impatient duplication:開發者複製自己或他人的程式碼造成的重複
- Interdeveloper duplication:不同開發者間共同開發或交接造成的重複
有時,為了可讀性,或避免耦合,或過早重構,應放棄DRY原則。[3]
參考文獻
[編輯]- ^ Hunt, Andrew; Thomas, David. The Pragmatic Programmer. Addison-Wesley Professional. 1999-10-30 [2021-09-26]. ISBN 978-0-201-61622-4. (原始內容存檔於2021-09-26).
- ^ Poudel, Prakash. Four Types of Duplication in Source Code. Prakash. 2015-10-01 [2021-09-26]. (原始內容存檔於2021-09-26) (英語).
- ^ 3.0 3.1 林奇璇, ShawnL. 程式設計心法 避免重複原則(DRY principle). 璇之又璇的網絡世界. 2020-04-06 [2021-09-26]. (原始內容存檔於2021-09-26) (中文(臺灣)).
- Kent Beck的Extreme Programming Explained一書。
- 《設計模式精解》第二版第10章。
- WikiWikiWeb關於本原則的解釋 (頁面存檔備份,存於互聯網檔案館)