重构:改善既有代码
Hireek 4/16/2022 重构代码
# 代码的坏味道
# 神秘命名
# 重复代码
# 过长函数
# 过长的参数列表
同一个抽象上,可以抽象成类
# 全局数据
控制全局变量的访问和修改,安全性
# 可变数据
ddd的值对象 solve
# 发散式变化
逻辑拆分,领域拆分。
# 霰弹式修改
方法内联,组合模块。之后再拆成小模块。
# 依恋情结
# 数据泥团
# 基本类型偏执
赋予对象
# 重复的switch,if else
多态
# 循环语句
管道取代循环,filter,map。
# 冗赘的元素
多余
# 夸夸其谈通用性
如无必要,勿增实体
# 临时字段
某种特殊情况而设的字段,无法理解
# 过长的消息链
# 中间人
过度委托
# 内幕交易
# 过大的类
# 纯数据类
# 被拒绝的遗赠
# 注释
此地无银三百两
# 重构的记录格式
我采用一种标准格式。每个重构手法都有如下5个部分。
- 首先是名称
- 速写
- 动机,为什么需要做这个重构,什么情况下不该做这个重构
- 做法,如何
# 第一组重构
# 提炼函数/变量
如果你需要花时间浏览一段代码才能弄清它到底在干什 么,那么就应该将其提炼到一个函数中,并根据它所做的事为其命名。以后再读 到这段代码时,你一眼就能看到函数的用途,大多数时候根本不需要关心函数如 何达成其用途(这是函数体内干的事)。
小函数得有个好名字才行,所以你必须在命名上花心思。起好名字需要练 习,不过一旦你掌握了其中的技巧,就能写出很有自描述性的代码。