一次且僅一次(英語:Once and only once,簡稱OAOO),又稱為Don't repeat yourself(不要重複你自己,簡稱DRY),或一個規則,實現一次(One rule, one place)是物件導向程式設計中的基本原則,程式設計師的行事準則。旨在軟件開發中,減少重複的資訊。
![]() | 此條目需要精通或熟悉電腦科學的編者參與及協助編輯。 (2021年9月26日) |
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:不同開發者間共同開發或交接造成的重複