如何理解“KISS 原则”?
KISS 原则的英文描述有好几个版本,比如下面这几个。
- Keep It Simple and Stupid.
- Keep It Short and Simple.
- Keep It Simple and Straightforward.
不过,仔细看你就会发现,它们要表达的意思其实差不多,翻译成中文就是:尽量保持简单。
代码逻辑复杂就违背 KISS 原则吗?
刚刚我们提到,并不是代码行数越少就越“简单”,还要考虑逻辑复杂度、实现难度、代码的可读性等。 越是能用简单的方法解决复杂的问题,越能体现一个人的能力。
YAGNI 原则
YAGNI 原则的英文全称是:You Ain’t Gonna Need It。直译就是:你不会需要它。实际上,这条原则的核心思想就是:不要做过度设计。
KISS 原则讲的是“如何做”的问题(尽量保持简单),而 YAGNI 原则说的是“要不要做”的问题(当前不需要的就不要做)。
DRY 原则
Don’t Repeat Yourself。不要写重复的代码。
实际上,重复的代码不一定违反 DRY 原则,而且有些看似不重复的代码也有可能违反 DRY 原则。
什么是代码的复用性?
代码复用表示一种行为:我们在开发新功能的时候,尽量复用已经存在的代码。
代码的可复用性表示一段代码可被复用的特性或能力:我们在编写代码的时候,让代码尽量可复用。
DRY 原则是一条原则:不要写重复的代码。
提高代码可复用性的一些方法,有以下 7 点。
- 减少代码耦合
满足单一职责原则
- 模块化
- 业务与非业务逻辑分离
- 通用代码下沉
- 继承、多态、抽象、封装
- 应用模板等设计模式
迪米特法则(LOD)
“高内聚、松耦合”是一个非常重要的设计思想,能够有效地提高代码的可读性和可维护性,缩小功能改动导致的代码改动范围。
高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一个类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中,代码容易维护。
松耦合,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少导致依赖类的代码改动。
不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口(也就是定义中的“有限知识”)。