如何寫出高質量的代碼,是大家一直都在被拷問的難題。通常,軟件開發的最佳實踐都提倡“高內聚、低耦合”。比如,在軟件的設計和開發過程中,應儘量做到,軟件各實體(如模塊、類、函數等)的責任有清晰地定義和劃分,並儘量避免軟件實體之間的耦合,從而降低代碼的複雜度。
什麼是SOLID?
SOLID是一系列軟件設計、開發的原則,是設計、開發出高質量軟件的手段。這些原則能幫助我們設計出“高內聚、低耦合”的軟件。遵循這些原則,我們能在代碼的開發與審查階段有效地發現代碼中的臭味。
SOLID是最常用的五個面向對象設計原則的英文名稱的首字母:
- [S]ingle Responsibility Principle(單一職責)
- [O]pen/Closed Principle(開閉原則)
- [L]iskov Substitution Principle(里氏替換)
- [I]nterface Segregation Principle(接口隔離)
- [D]ependency Inversion Principle(依賴倒置)
簡單解釋如下:
SRP:單一職責
就一個類而言,有且僅有一個引起它變化的原因。
OCP:開閉原則
軟件實體(模塊、類等)對擴展是開放的,對修改是關閉的。
對於一個類來說,如果要擴展其功能,應儘量使用添加新代碼的方式,而不是修改舊代碼。
LSP:里氏替換
在使用父類的地方,子類能替換父類。
DIP:依賴倒置
實現依賴於抽象,而不是抽象依賴於實現。
ISP:接口隔離
不強迫用戶依賴不需要的接口。
(接口屬於用戶,不屬於接口提供者。爲了更形象的理解,API應被稱爲Application Programmer Interface,而不是Application Programming Interface.)