重构:改善既有代码

4/16/2022 重构代码

# 代码的坏味道

# 神秘命名

# 重复代码

# 过长函数

# 过长的参数列表

同一个抽象上,可以抽象成类

# 全局数据

控制全局变量的访问和修改,安全性

# 可变数据

ddd的值对象 solve

# 发散式变化

逻辑拆分,领域拆分。

# 霰弹式修改

方法内联,组合模块。之后再拆成小模块。

# 依恋情结

# 数据泥团

# 基本类型偏执

赋予对象

# 重复的switch,if else

多态

# 循环语句

管道取代循环,filter,map。

# 冗赘的元素

多余

# 夸夸其谈通用性

如无必要,勿增实体

# 临时字段

某种特殊情况而设的字段,无法理解

# 过长的消息链

# 中间人

过度委托

# 内幕交易

# 过大的类

# 纯数据类

# 被拒绝的遗赠

# 注释

此地无银三百两

# 重构的记录格式

我采用一种标准格式。每个重构手法都有如下5个部分。

  • 首先是名称
  • 速写
  • 动机,为什么需要做这个重构,什么情况下不该做这个重构
  • 做法,如何

# 第一组重构

# 提炼函数/变量

如果你需要花时间浏览一段代码才能弄清它到底在干什 么,那么就应该将其提炼到一个函数中,并根据它所做的事为其命名。以后再读 到这段代码时,你一眼就能看到函数的用途,大多数时候根本不需要关心函数如 何达成其用途(这是函数体内干的事)。

小函数得有个好名字才行,所以你必须在命名上花心思。起好名字需要练 习,不过一旦你掌握了其中的技巧,就能写出很有自描述性的代码。

# 做法

# 内联函数/变量

# 改变函数声明

# 封装变量

# 引入参数对象

# 函数组合成类

# 函数组合变换

# 拆分阶段