前言
本文的主要摘抄于《重构:改善既有代码的设计》第二版,然后自己用一两句话复述了一下,主要用于回忆自己写过的代码。
1. 神秘命名(Mysterious Name)
现象:一些摸不着头脑的类型名、函数名、字段名、变量名、模块名
2.重复代码(Duplicated Code)
现象:相同的代码结构出现在多个地方
3.过长函数 (Long Function)
现象:函数体过长,承担的责任或任务就越多
4.过长参数列表(Long Parameter List)
现象:形参太多了(可以理解为受到外界的影响因素太多)
5.全局数据(Global Data)
现象:主要体现在全局变量上
6.可变数据(Mutable Data)
现象:程序员在A更新了数据Data,但是在B出的程序获取了与期望不同的Data
7.发散式变化(Divergent Change)
现象:某模块或者类经常因为不同的原因在不同的方向上发生变化
8.霰(xiàn)弹式修改(Shotgun Surgery)
现象:如果每遇到某种变化,都必须在许多不同的类中做出许多小修改。
9.依恋情结(Feature Envy)
现象:一个函数跟另一个模块的函数或者数据交流格外频繁,远胜于在自己所处模块内部的交流,这是依恋情结的典型情况。
10.数据泥团(Data Clumps)
现象:在两个或多个类型出现相同的字段和函数,由这些相同的数据和函数组成的就是数据泥团。
11.基本类型偏执(Primitive Obsession)
现象:使用基本类型代替问题域的类型,例如:使用基本类型代替坐标、范围、钱等问题域的类型
12.重复的Switch (Repeated Switches)
现象:出现多个相同的switch
13.循环语句(Loops)
现象:模糊被处理的元素和处理他们的动作
14.冗赘的元素(Lazy Elements)
现象:如果一个元素的所得不值其身价,那就让他消失
15.夸夸奇谈的通用性(Speculative Generality)
现象:因考虑通用性和未来性,并因而企图以各式各样的钩子和特殊情况来处理一些非必要的事情
16.临时字段(Temporary Field)
现象:一个类的内部某个字段仅为某种特定情况而设定的字段
17.过长的消息链(Message Chains)
现象:A对象请求B,B请求C,C请求D,D…这就是消息链
18.中间人(Middle Man)
现象:某个类中的接口有一半函数都委托给其他类了
19.内幕交易(Insider Trading)
现象:两个模块私底下频繁的交换数据
20.过大的类(Large Class)
现象:一个的类承担了太多的责任
21.异曲同工的类(Alternative Classes With Different Interfaces)
现象:两个接口做着相同的事情,却又不同的方法签名
22.纯数据类(Data Classes)
现象:一个类的内部只有一些字段以及访问(读写)这些字段的函数,除此之外一无长物
23.被拒绝的遗赠(Refused Bequest)
现象:在继承过程中,如果子类复用了超类的行为,却又不愿意支持超类的接口或者拒绝超类的实现
24.注释(Comments)
现象:啰里吧嗦的注释
25.神秘常量 (Mysterious Constant)
现象:不知道用来干什么常量,主要出现在初始化,判断,运算中
参考文献
[1] Martin Fowler[美] 著;熊杰、林从宇译;重构:改善既有代码的设计(第2版)[M];北京.人民邮电出版社,2019.5