6.3 为什么要采用开闭原则
开闭原则是最基础的一个原则。前五个原则就指导设计的工具和方法,而开闭原则才是其精神领袖。
开闭原则是非常重要的,可通过以下几个方面来理解其重要性。
1. 开闭原则对测试的影响
通过修改实现变化的困难
所有已经投产的代码都是有意义的,并且都受系统规则的约束,这样的代码都要经过”千锤百炼”的测试过程,不仅保证逻辑是正确的,还要保证苛刻条件(高压力、异常、错误)下不产生”有毒代码"(Poisonous Code
),因此有变化提出时,如果我们修改原来健壮的代码,就需要把原有的测试过程回笼一遍,需要进行单元测试、功能测试、集成测试甚至是验收测试.
想着通过修改一个方法或多个方法代码来完成变化,基本上就是痴人说梦,该类的所有测试方法都要重构,想象一下你在一堆你并不熟悉的代码中进行重构时的感觉吧
所以,我们需要通过扩展来实现业务逻辑的变化,而不是修改。
2. 开闭原则可以提高复用性
为什么要复用
复用可以减少代码量
,避免相同的逻辑分散在多个角落,避免日后的维护人员
为了修改一个微小的缺陷或增加新功能而要在整个项目中到处查找相关的代码,然后发出对开发人员
“极度失望”的感慨。
如何提高复用率
缩小逻辑粒度,直到一个逻辑不可再拆分为止,粒度越小,被复用的可能性就越大。
具体做法
通过原子逻辑的组合
得到业务逻辑,而不是在一个类中独立实现一个业务逻辑。
3. 开闭原则可以提高可维护性
维护人员最乐意做的事情就是扩展一个类
,而不是修改一个类,甭管原有的代码写得多么优秀还是多么糟糕,让维护人员读懂原有的代码,然后再修改,是一件很痛苦的事情。
4. 面向对象开发的要求
在设计之初考虑到所有可能变化的因素,然后留下接口。
原文链接: 6.3 为什么要采用开闭原则