重构:代码中的馊味道

前言

本文的主要摘抄于《重构:改善既有代码的设计》第二版,然后自己用一两句话复述了一下,主要用于回忆自己写过的代码。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值