了解设计原则SOLID,让系统更好维护

121 阅读2分钟

今天来聊聊SOLID设计原则,可能很多人会思考它和OOP、OOD、设计模式的关系,本文告诉你SOLID的前世今生以及它的定位。

2001年,Martin Fowler等人发表敏捷宣言,认为软件开发流程不应将过多资源放在实际开发前的计划与文件中,而应该透过迅速的可用版本迭代与信息透明来减低软件的交付风险。

2002年,Robert C. Martin从实际系统开发的角度,将敏捷宣言的思想(迅速迭代、可用系统、反映问题)与过去的实践心得结合,完成了《Agile Software Development, Principles, Patterns, and Practices》一书。

这本书主要描绘了:要降低软件交付/维护的风险/成本,需要实现敏捷开发,系统与团队要能达到敏捷开发的要求,就必须通过一些系统设计上的原则来避免会影响可维护性的设计坏习惯,是系统的变更能更有效且成本更低。

Robert C. Martin认为系统可维护性差的原因主要在于耦合,它提到的设计坏习惯主要包含:

  • Rigidity(僵化):难以变更,任何变更都会导致系统中与其相关的组件必须同时变更,且引发的变更无法评估。
  • Frigility(脆弱):容易毁坏,当系统发生变更时,系统容易在多个相关或不相关的地方发生问题。
  • Immobility(顽固):难以复用,组件之间存在太多的依赖,导致可复用部分一处的成本高于重写的成本。
  • Viscosity:难以进行正确的修改,系统进行变更的时候,因为考虑成本,所以修改都会一hack的方式完成,而不是维持原设计的方式进行。

仔细一想,确实如此,大部分的问题似曾相识!

Robert C. Martin提到的方法论也可以理解为OOD(面向系统设计),OOD:规划不同的类和对象如何相互作用以解决具体问题。

SOLID是一套面向对象的五项设计原则,可帮助设计良好、结构简洁的类的基础上编写更易于维护、灵活和可扩展的代码。SOLID是面向对象设计最佳实践的基本组成部分。

一句话,SOLID是指导你如何规划面向对象中的类和对象,从而让你的代码更容易维护,且提高它的扩展性!


欢迎关注我的公众号,搜索:虞大胆的叽叽喳喳 或者 yudadanwx,文章比较杂,涉及到编程语言、Linux、大数据、分布式、DevOps、AI、微服务、K8s/Docker等等,希望全方位给初学者一点帮助,积累或巩固知识,体验到技术的美妙。