大话重构--(读书笔记)

大话重构

本书属于略读、跳读型书籍,了解大概内容即可。需要在实践中反复运用书中的建议才能够掌握知识。


相似书籍

有时间可以本书为基础做一次主题阅读


目录

  • 基本概念
  • 系统重构的六大步骤

基本概念

什么是系统重构?

系统重构就是,在不改变软件的外部行为的基础上,改变软件内部的结构,使其更加易于阅读、维护和变更。
系统重构,应该尽量避免大设计,而尽量采用一个一个连续不断的小设计。也称为“小步快跑模式“。
其中的蕴涵了敏捷编程的思想:简单与快速反馈。

修改软件的四个动机
  • 增加新功能
  • 原有功能有 BUG
  • 改善原有程序结构
  • 优化原有系统功能
什么是重构?

重构的过程就像在做数学题,一步一步地进行等量变换。在重构的过程,需要保持系统外部行为对应的现有结果保持不变性。
在进行重构之间,应该用完善的测试保证重构前后系统行为对相同输入的一致性。

  • 简单重构:增加注释、调整顺序、重命名变量、进行分段
  • 抽取方法与类
什么时候重构?
  • 先重构,再扩展
  • 先重构, 再复用

修改代码的两个步骤

  • 先在不修改原有系统功能的基础上修改既有代码的设计。
  • 在已经重构过的、可以适应新需求的基础上增加新功能。

系统重构的六大步骤

第一步:分解大函数
  • 发现和提取重复逻辑的代码,看是否能够归结到一个函数
  • 以功能为核心将其拆分为一个一个独立的函数
第二步:拆分大对象

衡量对象好坏的标准是:高内聚,低耦合。我们以职责驱动设计思想为核心,要求设计的所有类和接口都有自己的职责定义,每个类和接口内部的方法和属性都是围绕该职责设计的,尽量不取做与职责无关的事情。

  • 以单一职责原则(SRP)对对象进行拆分
  • 抽取类 :站在用户的角度、分析业务领域相关的事务、事物的属性、事物拥有的行为。
  • 归并类 :从更高层次上,再次对现有的类进一步抽象
第三步:提高代码复用率

许多功能之间都有相同或相似的代码,如何编写这部分代码?什么是相似功能呢?1、处理同一流程中某个环节而采用的不同方式。2、在不同业务中某个功能相似或相近的环节

  • 当重复代码存在同一个对象时:抽取方法
  • 当重复代码存在于不同对象中时:抽取类
  • 当不同对象中复用代码时:封装成实体类
  • 当代码所在类具有某种并列关系时:抽取父类
  • 当出现继承泛滥时–将继承转换为组合
  • 当重复代码被分割成碎片时:继承结合模板模式
第四步: 发现程序可扩展点

进行系统重构另一目的就是: 使系统能够更加轻松地应对系统需求的变更,提高系统的易变性。

  • 以开放-封闭原则对可扩展点进行设计
  • 过程的扩展与设计钩子 : 模板模式增加可扩展点
  • 面向切片编程(Python 中装饰器就是一很好的例子)[拦截器」
第五步:降低程序依赖度

面对日后软件的变化需求,最根本方法就是降低系统的耦合度,即系统中各个功能之间的互相依赖程度。这也是绝大多少设计模式的目标

  • 依赖反转原则 (DIP:Dependency Inversion Principle)

1、高层次的模块不应该依赖于底层的模块,两者都应该依赖于抽象接口 2、抽象接口不应该依赖于具体是吸纳,而具体实现应该依赖于抽象接口。

  • 外部接口与适配器模式–与外部系统解耦
  • 继承的泛滥与桥接模式(原有的因两个变化形成的继承改写为组合)
  • 方法的解耦与策略模式
  • 过程解耦与命令模式
  • 透明的功能扩展与设计—组合模式与装饰者模式
第六步:分层

笔记未覆盖的地方
  • 怎么拥抱变化—领域驱动设计
  • 评价软件质量的指标
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值