如何写出高质量的代码,是大家一直都在被拷问的难题。通常,软件开发的最佳实践都提倡“高内聚、低耦合”。比如,在软件的设计和开发过程中,应尽量做到,软件各实体(如模块、类、函数等)的责任有清晰地定义和划分,并尽量避免软件实体之间的耦合,从而降低代码的复杂度。
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.)