AI到来

书: https://pan.baidu.com/s/15VfTw9eJ2MoiHktwswP0gw?pwd=tq5x
笔记如下:

一、重构基础

  1. “重构(Refactoring)是在不改变代码外在行为的前提下,对内部结构进行改善,以提高可读性、可维护性的过程。”
  2. “坏代码的臭味(Bad Smells):重复代码、过长函数、过大的类、冗余参数等是重构的主要信号。”

二、重构原则

  1. “两顶帽子(Two Hats)原则:开发时交替进行‘添加功能’和‘重构’,不可混杂。”
  2. “测试是重构的安全网:没有自动化测试的重构如同蒙眼走钢丝。”

三、基本重构手法

  1. “提炼函数(Extract Function):将一段代码抽取为独立函数,并以意图命名(如calculateTax()而非processData())。”
  2. “内联函数(Inline Function):当函数体与其名称同样清晰时,消除不必要的间接层。”

四、对象重构

  1. “搬移函数(Move Method):将函数移至更合适的类中(如Customer.getOrderTotal()移至Order类)。”
  2. “以多态取代条件表达式(Replace Conditional with Polymorphism):用子类继承或策略模式消除复杂的switch-case。”

五、数据重构

  1. “封装变量(Encapsulate Variable):将裸数据(如public int age)改为私有字段并提供访问方法。”
  2. “以查询取代临时变量(Replace Temp with Query):将中间计算结果提取为方法,减少局部变量干扰。”

六、简化逻辑

  1. “分解条件表达式(Decompose Conditional):将复杂if条件拆分为命名清晰的独立函数。”
  2. “合并重复的条件片段(Consolidate Duplicate Conditional Fragments):将重复代码移至条件分支之外。”

七、API重构

  1. “分离查询与修改(Separate Query from Modifier):函数要么返回值,要么修改状态,不可兼得。”
  2. “引入参数对象(Introduce Parameter Object):将多个相关参数封装为对象,简化调用接口。”

八、继承重构

  1. “以委托取代继承(Replace Inheritance with Delegation):当子类仅需父类部分功能时,改用组合关系。”
  2. “提炼超类(Extract Superclass):多个类的共性行为上移至父类,避免重复代码。”

九、大型重构

  1. “拆分阶段(Split Phase):将混杂的处理逻辑拆分为明确的阶段(如解析→渲染)。
  2. “内联类(Inline Class):当一个类不再承担足够职责时,将其合并到调用者中。”

十、重构哲学

  1. “重构的节奏:小步修改(Baby Steps)→ 频繁测试 → 持续集成,避免‘大爆炸’式重写。”
  2. “优秀的程序员不是不写烂代码,而是能通过重构持续改进它。”

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注