DRY 原则
DRY 原则
DRY 英文描述:
1 | Don’t Repeat Yourself |
中文翻译:
1 | 不要重复自己 |
一、如何理解 “DRY”?
从编程的角度去理解的话,其含义就是:
- 不要编写重复的代码
这个概念很简单,就是不要做重复的事情。
DRY 原则实际上是要求尽量复用代码,而不要重复造轮子。
什么样的代码,才算是重复?
- 实现逻辑重复:不同的方法里面,写了多份一样的代码
- 功能语义重复:同样的功能,采用了不同的实现方式(比如正则判断、字符串对比)
- 代码执行重复:在一个方法里面,执行了多次同一个方法
这几种情况都违反了 DRY 原则吗?
- 实现逻辑重复:不算违反 DRY 原则,因为是属于不同的功能里面,只是逻辑有点类似而已
- 功能语义重复:算是违反了 DRY 原则,同样的功能却弄了多个不同的实现
- 代码执行重复:也算是违反了 DRY 原则,一次执行里面没必要调用多次同一个方法
那这几种情况一般要怎么处理呢?
- 实现逻辑重复:只能说代码没有复用到,可以把公共代码提取到一个新方法里,供不同地方调用
- 功能语义重复:只保留一份实现就可以了,其他的都删掉
- 代码执行重复:应该将多次调用的方法结果保存到局部变量,避免多次执行
不管有没有违反 DRY 原则,在编写代码时,都应该尽量复用已有代码。
二、为什么要 “DRY”?
- 降低维护成本,去掉重复代码后,就不需要修改多个地方
- 避免逻辑不一致,这种问题的原因往往是因为漏改了其中一个地方的代码
- 提高代码可读性,重复代码的实现可能是不一样的,会让人感到疑惑
三、如何实现 “DRY”?
DRY 原则要求尽量复用已有代码,这就要求代码要有可复用性,否则就没办法复用了。
所以要实现 DRY,首先就要提高代码的可复用性。
常见的提供代码复用性的方法:
- 减少代码耦合
- 满足单一职责原则
- 模块化
- 业务与非业务逻辑分离
- 通用代码下沉
- 抽象、封装、继承、多态
- 应用设计模式
如何识别什么时候要执行 DRY 原则呢?
- 多次在不同地方看到同样的代码(
Rule of Three
)
多次是多少次?一般来说,超过 2 次都算是多次了。
一旦发现多个地方有重复代码,就应该用上面的方法进行重构,改造成可复用的代码。