架构师训练营学习总结——第二周
面向对象编程的本质与未来
编程的核心要素
编程的核心要素为计算机(劳动工具)、人(劳动者)、客观业务领域(劳动对象)。软件开发的历史即围绕着三个要素发展,大致经历三个阶段:
由以计算机为核心的汇编语言;
以人为核心的,能让人阅读和理解的高级语言和结构化语言;
以客观业务领域为核心的面向对象编程。
OOP能更真实地反映我们需要解决的问题领域,也能对问题进行更好地抽象。
面向对象编程地三要素
OOP地三要素为:
封装性:隐藏实现
继承性:是接口能够复用
多态性:让对象可以相互替换
以上三要素非OOP独有,其中多态性使应用程序在运行期表现出不同的特性,是OOP各种编程技巧、设计模式和设计原则的基础
面向对象编程的目的和原则
OOP的最终目的只有一个,那就是强内聚低耦合,从而使系统
易扩展-易于增加新的功能
更强壮-不容易被粗心的程序员破坏
可移植-能够在多样的环境下运行
更简单-容易理解、容易维护
糟糕代码与以上目标相悖,主要特点为
僵硬性,难以改变扩展,易导致连锁改动
脆弱性,导致与改动无关的地方出现问题
牢固性,强耦合,难以分离重用
粘滞性,改动时,保持系统设计比破化设计更难,做错误的事情就很容易
不必要的复杂性,设计中含有不具任何直接好处的基础结构
不必要的重复性,重复结构可使用单一的抽象进行统一,通常由copy paste编程导致
晦涩性,难以阅读理解
面向对象设计原则
开闭原则OCP:对扩展开放,对更改封闭
依赖倒置原则DIP:让高层模块不依赖低层模块而是依赖接口,高层决定低层,从而实现高层的复用
Liskov替换原则LSP:根据应用场景的上下文,子类必须能够替换基类
单一职责原则SRP:一个类,只能有一个引起它变化的原因,违反该原则会导致系统脆弱性和不可移植性
接口隔离原则:不应该强迫客户程序依赖他们不需要的方法
对于软件开发而言,要想实现敏捷的软件开发,并不在于敏捷的过程保证,当然这些过程保证也很重要,更重要的是设计本身是敏捷的,当我们绣球变更和快速迭代的时候,这些设计能够快速支撑我们变更和迭代,而不是耦合在一起,如果软件设计本身是僵硬、脆弱、粘滞、不可移植性、难以复用的,那么即使有再好的软件过程保证,也难以实现敏捷的软件开发,而如果设计是敏捷、简单、易于复用、易于维护的,那么敏捷的快速迭代,功能的快速更新就是水到渠成的
参考书:
《敏捷软件开发:原则、模式与实践》——Robert.C.Martin
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/23e79063d8fe171669dd0915a】。未经作者许可,禁止转载。
评论