写点什么

架构师训练营学习总结——第二周

用户头像
文智
关注
发布于: 2020 年 09 月 26 日
架构师训练营学习总结——第二周

面向对象编程的本质与未来

编程的核心要素

编程的核心要素为计算机(劳动工具)、人(劳动者)、客观业务领域(劳动对象)。软件开发的历史即围绕着三个要素发展,大致经历三个阶段:

  1. 由以计算机为核心的汇编语言;

  2. 以人为核心的,能让人阅读和理解的高级语言和结构化语言;

  3. 以客观业务领域为核心的面向对象编程。

OOP能更真实地反映我们需要解决的问题领域,也能对问题进行更好地抽象。

面向对象编程地三要素

OOP地三要素为:

  1. 封装性:隐藏实现

  2. 继承性:是接口能够复用

  3. 多态性:让对象可以相互替换

以上三要素非OOP独有,其中多态性使应用程序在运行期表现出不同的特性,是OOP各种编程技巧、设计模式和设计原则的基础

面向对象编程的目的和原则

OOP的最终目的只有一个,那就是强内聚低耦合,从而使系统

  1. 易扩展-易于增加新的功能

  2. 更强壮-不容易被粗心的程序员破坏

  3. 可移植-能够在多样的环境下运行

  4. 更简单-容易理解、容易维护

糟糕代码与以上目标相悖,主要特点为

  1. 僵硬性,难以改变扩展,易导致连锁改动

  2. 脆弱性,导致与改动无关的地方出现问题

  3. 牢固性,强耦合,难以分离重用

  4. 粘滞性,改动时,保持系统设计比破化设计更难,做错误的事情就很容易

  5. 不必要的复杂性,设计中含有不具任何直接好处的基础结构

  6. 不必要的重复性,重复结构可使用单一的抽象进行统一,通常由copy paste编程导致

  7. 晦涩性,难以阅读理解

面向对象设计原则

  • 开闭原则OCP:对扩展开放,对更改封闭

  • 依赖倒置原则DIP:让高层模块不依赖低层模块而是依赖接口,高层决定低层,从而实现高层的复用

  • Liskov替换原则LSP:根据应用场景的上下文,子类必须能够替换基类

  • 单一职责原则SRP:一个类,只能有一个引起它变化的原因,违反该原则会导致系统脆弱性和不可移植性

  • 接口隔离原则:不应该强迫客户程序依赖他们不需要的方法

对于软件开发而言,要想实现敏捷的软件开发,并不在于敏捷的过程保证,当然这些过程保证也很重要,更重要的是设计本身是敏捷的,当我们绣球变更和快速迭代的时候,这些设计能够快速支撑我们变更和迭代,而不是耦合在一起,如果软件设计本身是僵硬、脆弱、粘滞、不可移植性、难以复用的,那么即使有再好的软件过程保证,也难以实现敏捷的软件开发,而如果设计是敏捷、简单、易于复用、易于维护的,那么敏捷的快速迭代,功能的快速更新就是水到渠成的

参考书:

《敏捷软件开发:原则、模式与实践》——Robert.C.Martin



发布于: 2020 年 09 月 26 日阅读数: 43
用户头像

文智

关注

还未添加个人签名 2018.11.29 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营学习总结——第二周