開閉原則OCP與KISS簡單原則衝突嗎? - macerub
如何看待開閉原則(OCP)? 有些人不認同OCP,他們認為我們應該專注於編寫簡單的程式碼。 我同意這一點,但是我沒有看到簡單性和OCP是如何不相容的。
有兩個初步要點:
- OCP的目標不是編寫我們再也不會修改的關閉程式碼,否則將導致過度設計和前端大設計(BDUF)。 我們將用無用的抽象來填充程式碼,以解決不存在的問題。
- 完全遵守OCP是不可能的。 無法通過新增新程式碼而不修改現有程式碼來滿足使用者要求的任何可能的更改。 我們無法預見使用者將要求的每一項變更。
考慮到這些要點,編寫簡單的程式碼非常有道理。 當使用者要求更改時,簡單的程式碼將使我們能夠輕鬆地應用更改。 而且,如果我們得到使用者的頻繁反饋的情況下。
我們將知道使用者所需的更改,並且我們將能夠建立使這些更改的應用變得更加容易的抽象。編寫簡單的程式碼,重構和新增抽象,因為它們被證明是必要的。注意YANGNI原則。
下面是您遵守OCP的方式:
- 在實際使用者需求的驅動下,OCP從重構中浮現出來。
- OCP並非來自BDUF設計人員的預期行為。
OCP的要點是:
- 抽象化:將抽象與底層細節分開;
- 將變化與保持不變分開。
OCP是否仍然有意義? 我會說是的。 如果您編寫了一個將模組傳送文字到裝置的抽象模組,那麼在不接觸模組的情況下新增新類是否很好? 這就是我們實現可擴充套件模組和可插入行為的方式。
banq注:當需求改變或增加時,有兩種直覺:需求改變,就要修改原有程式碼;需求新增加功能,就要新增程式碼:
需求有兩種變化:新增和修改。
程式碼有兩種變化:新增和修改。
這兩種不一定要一一對應,而是根據簡單原則和OCP原則去選擇程式碼的新增或修改來滿足需求的新增,使用程式碼的新增或修改來滿足需求的修改。
簡單原則是當下工作的簡單,OCP原則是為了讓程式碼結構簡單。這兩者都需要考慮。
程式設計第一法則:如果它執行,就不要觸碰它(修改)。OCP原則可以避免你觸碰能工作的程式碼,雖然這些程式碼執行得很奇特。
相關文章
- OCP原則——開閉原則
- 設計原則:開閉原則(OCP)
- Observer觀察者模式與OCP開放-封閉原則Server模式
- 開閉原則
- 設計原則之【開放封閉原則】
- 開閉原則——物件導向程式設計原則物件程式設計
- 《JavaScript設計模式與開發實踐》原則篇(3)—— 開放-封閉原則JavaScript設計模式
- 設計模式六大原則(六)----開閉原則設計模式
- DesignPattern系列__05開閉原則
- 開放封閉原則與規則引擎設計模式 - devgenius設計模式dev
- 設計模式的七大原則(5) --開閉原則設計模式
- 七大軟體設計原則之一 | 開閉原則
- 程式碼質量-開閉原則
- 物件導向之 開閉原則物件
- java開閉原則是什麼?Java
- 【架構設計】保持簡單輕量設計的三個原則——DRY,KISS, YAGNI架構
- 設計原則之【單一職責原則】
- 《JavaScript設計模式與開發實踐》原則篇(1)—— 單一職責原則JavaScript設計模式
- 嘻哈說:開放封閉原則
- 面象物件設計6大原則之二:開放封閉原則物件
- 聽過“香蕉原則”嗎?
- DRY原則的一個簡單實踐
- Laravel深入學習9 – 開放封閉原則Laravel
- 編碼最佳實踐——開放封閉原則
- 單一職責原則
- 《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則JavaScript設計模式
- 簡單介紹架構設計的原則!架構
- iOS 遵循開閉原則的實際案例討論iOS
- 設計模式六大原則(一)----單一職責原則設計模式
- 設計原則-依賴反轉原則
- SOLDI原則之DIP:依賴倒置原則
- 設計原則之【介面隔離原則】
- 設計原則:介面隔離原則(ISP)
- oop原則OOP
- SOLID原則Solid
- 簡單介紹Python 處理錯誤的原則Python
- 設計模式的七大原則(1) --單一職責原則設計模式
- 軟體設計原則—介面隔離原則