編程之美:九大設計原則SOLID、KISS、DRY、YAGNI、LOD

前言

想寫出優雅、健壯、易讀、維護性好,跟詩一樣的代碼並不是一件容易的事,但也並不是無路可尋,遵循以下九大原則,多多實踐,自然會向著詩一樣的方向前進;

SOLID

SOLID並不是一個設計原則,而是五個設計原則的合稱;

1.S - 單一職責

Single Responsibility Principle:單一職責原則

一個類、一個模塊或者是一個方法的職責應該是單一的;

如果同時承擔了兩個責任,那麼當其中一個需要改變時,極有可能影響另一個;

2.O - 開閉原則

開閉原則,指的是對擴展開放,對修改關閉;

當有新的功能或者需求時,最好是在原有邏輯架構上進行擴展,而儘可能少的影響已經存在的邏輯,也就是儘量不修改現有邏輯;

23種設計模式中大部分都是為了解決特定場景下的擴展問題而存在的;

這應該是架構設計中最重要的原則之一(之一其實可以忽略)

3.L - 里氏替換原則

里氏替換原則,所有父類出現的地方都可以用其子類替換,並且可以保證其行為的正確性;

這就要求子類繼承的父類的所有方法都必須遵從父類方法的協議,這裡的協議不僅僅是接口參數,包括接口的功能;

4.I - 接口隔離原則

客戶端不應該依賴其不需要依賴的接口,比如:客戶端僅僅需要一個接口,那麼就只給客戶端提供一個接口,提供多了反而容易出問題;

舉例:客戶端僅僅需要用戶查詢接口,各種原因將用戶刪除接口也暴露給客戶端,顯然不合適;

5.D - 依賴反轉原則

下層模塊不要依賴上層模塊。上層模塊和下層模塊應該通過抽象來互相依賴,而不應該依賴具體細節。,具體實現細節依賴抽象。

KISS原則

6.Keep It Simple and Stupid.

儘量保持代碼的簡單、易讀;

簡單易讀的代碼可維護性更好,另外因為代碼簡單,因此bug也不易藏身;即便出了bug 查找起來也比較方便

YAGNI

7.不要去開發當前不需要的代碼;主要思想是防止過度設計

DRY原則

8.Don’t Repeat Yourself,

儘量減少重複代碼;比如某些重複邏輯可以單獨提取為函數;

另外,同一個邏輯也儘量避免多餘的重複執行,比如在一個鏈式調用的函數之間的參數校驗,可能只需要在其中一個校驗即可,不需要每一個都校驗;

LOD

迪米特法則,設計時考慮模塊之間的耦合性,儘量做到高內聚、低耦合;


編程之美:九大設計原則SOLID、KISS、DRY、YAGNI、LOD


分享到:


相關文章: