# SOLID 原則 ###### tags: `筆記` `物件導向` `軟體工程` 某天上了kuma 老師的單元測試分享 提到了對於 SOLID 的解釋 這邊筆記一下.. --- ## SOLID 原則,甚麼是好設計?  #### 單一責任原則 SRP ( Single Responsibility Principle ) 為了 A 而做的修改不會破壞服務B的元件 > 1. 了解領域、減少不必要的依賴 > 2. 高階層模組越偏向業務面思考,對於低階模組偏向技術面思考 > 3. 判斷時機點。寫完能通過驗收單元測試的程式碼後或 Code Reviewer 後,再開始 SRP 重構 > #### 開放封閉原則 OCP (Open Closed Principle) 已經存在好好的東西不用一直改 > 1. OCP 只能是一個理想狀態,很難不修改。如: Bug > 2. 如何設計穩定的 Interface 是一個很大的挑戰。如: 三方支付 >  #### 里氏替換原則 LSP ( Liskov Substitution Principle ) 細節有變時,使用者就算不知道,也不會壞 > 1. 減少 Client Code 不必要的依賴 > #### 介面隔離原則 ISP ( Interface Segregation Principle ) 使用者只使用**量身打造的**的介面 > 1. Focus 在依賴與 Interface 穩定度,減少意外的發生 > 2. 核心就是契約精神 >  #### 相依反轉原則 DIP( Dependency Inversion Principle ) 使用者專注在自身的抽象邏輯,不用太在意依賴的細節 > 1. 減少依賴程度以保護核心業務流程 > 2. 抽出去的 Interface 要跟高階模組放在同一包 Module 裡面 > 3. 可以延遲決策,如: Mock 測試或 In-memory > > > ### 結論 #### 與 DDD 的整合思考  #### 使用或不使用 SOLID  #### 建立自己的設計守則,有意識地設計自己的程式碼 #### 最適合進行 SOLID 的時機點: 重構 ### 參考 * [測試有時間再寫?你就是不寫才會沒時間!](https://www.youtube.com/watch?v=wTpsxjP0t7M) * [Fong - 你真的懂 SOLID 原則嗎?](https://www.youtube.com/watch?v=Dmv6tMnaCQA)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up