MENU

《重构》第二章学习笔记

May 15, 2022 • 《重构》学习笔记

《重构》第二章学习笔记

重构的定义

作为名词形式:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低修改成本。
作为动词形式:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

使用重构技术开发软件时,存在着两种行为状态,分别是添加新功能和重构。开发过程中,可能会经常变换状态,但是一定要清楚自己当前要做的事情。

为何重构

  • 改进软件设计
  • 使软件更容易理解
  • 帮助找到Bug
  • 提高编程速度

何时重构

重构并不是万能的,但是却可以始终良好的控制自己的代码。
  • 三次法则:事不过三,三则重构。
  • 添加功能时重构
  • 修补错误时重构
  • 复审代码时重构

重构的难题

  • 数据库

    大多数商业程序和数据库接口耦合度高,数据库结构和数据模型之间相互依赖。可以在对象模型和数据库模型之间插入一个分割层,虽然会提升系统的复杂度,但是带来更高的灵活度。

  • 修改接口

    如果重构改变了已发布的接口,就必须要同时维护新旧两个版本的接口,直到确定所有用户都能够切换到最新的版本。

  • 难以通过重构手法完成的设计改动

何时不该重构

  • 代码过于混乱

    有时候代码过于混乱,重构还不如直接重写省时省力。

  • 现有代码无法正常运作

    重构代码前,代码知道能够在大部分情况下正常运行。

  • 项目接近最后的期限

    重构能够提高生产力,如果最后没有足够的时间,一般说明早该进行重构。

重构与性能

三种性能提升法
  • 时间预算法

    通常只适用于性能要求极高的实时系统,使用这种方法,在分解设计时就要做好预算,给每个组件预先分配一定的资源包括时间和执行轨迹,每个组件不能超过自己的时间预算,就算拥有组件之间调度预配时间的机制也不行。

  • 持续关注法

    在做任何事情时都要设法保持系统的高性能。

  • 利用程序分析的统计数据

    编写构造良好的程序,不对性能投以特别的关注,直至进入性能优化阶段。一旦进入该阶段,再按照某个特定程序来调整程序性能。在性能优化阶段使用一个度量工具来监控程序的运行,查找出程序中大量消耗时间和空间的地方,然后集中关注这些地方。每次都只进行小幅度的修改,如果没能提高性能,就应该撤销这个更改,持续这个流程,直到能够达到客户满意的性能。

重构可以帮助我们写出更快的软件,短期来看,重构的确有可能使软件变慢,但在优化阶段可以更容易的调整软件性能,长远上还是会得到好的效果。