iOS首席工程师Buymie的Mnats Karakhanyan
好的软件系统应该具有好的架构和构建块。 如果没有很好地构建模块,那么体系结构就没什么大不了的,那么您最终可能会使用构建良好的模块构建一个糟糕的系统。
这就是SOLID原则的用武之地。
SOLID原理告诉我们如何将我们的功能和数据结构安排到类中,以及如何将这些类互连。
注意: “类”一词并不意味着这些原则仅适用于面向对象的软件。 类只是功能和数据的耦合分组。 每个软件系统都有这样的分组。
SOLID是5条原则的首字母缩写,代表:
这些原则的目标是创建以下软件结构:
类或模块应该有一个更改理由,并且只有一个更改理由
该原则为我们提供了责任的定义和班级规模的准则。 班级应该承担一项责任-改变的原因之一。
违反SRP的示例。
让我们看看这堂课有什么样的责任?
我们可以解决此问题,将职责移至类:
注意:听到这个名称太容易了,然后假设它意味着每个模块都只能做一件事 。 有这样的原则。 一个函数应该做一件事情,并且只能做一件事情。
违反原则的症状是意外复制和合并。
软件实体(类,模块,功能等)应打开以进行扩展,但应关闭以进行修改
让我们看一个违反OCP的例子。 考虑类AnaliticServise,该类正在跟踪Facebook中的事件。
现在,我们还想增加在Google Analytics(分析)中跟踪相同事件的可能性。 不违反OCP的解决方案可能如下所示:
注意:遵循OCP通常会引入新的抽象级别,这会增加我们代码的复杂性。 您想专注于最有可能在您的设计中发生变化的领域,并在其中应用原理。
令Φ(x)是关于类型T的对象x的可证明性质。那么对于类型S的对象y,其中S是T的子类型,则Φ(y)应该成立。