重构-代码的坏味道
2017-08-20 16:10
323 查看
一、Duplicated Code(重复代码)
1、同一个类的两个函数含有相同的表达式:Extract Method提炼重复代码;2、两个互为兄弟的子类内含有相同表达式:Extract Method提炼重复代码,使用Pull Up Method,推入超类;
3、代码只是类似,并非完全相同:Extract Method将相似部分和差异部分分割,构成单独函数。运用Form Template Method获得一个Template Method设计模式;
4、如果有些函数以不同的算法做相同的事,可以选择其中较清晰的一个,使用Substitute Algorithm将其他函数的算法替换掉;
5、两个毫不相关的类出现Duplicated Code:Extract Class提炼到一个独立类中,直接使用这个新类。
二、Long Method(过长函数)
如何确定:1、寻找注释。每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。对一行或一组代码都可以这么做,关键不在函数长短,而在于函数做什么和如何做。
2、条件表达式和循环
Decompose Conditional处理条件表达式。
方法:
Extract Method:找到函数中适合集中在一起的部分,提炼出来
如果函数内有大量的参数和临时变量,就会当做入参,可读性没有提升。可以运用Replace Temp with Query消除临时元素。
Introduce Parameter Object和Preserve Whole Object 则可以将过长的参数列表变得更简洁。
仍有太多临时变量和参数,Replace Method with Method Object
三、Large Class(过大的类)
Extract Class、Extract Subclass、Extract Interface四、Long Parameter List(过长参数列)
向已有的对象发出一条请求就可以取代一个参数:Replace Parameter with Method将来自同一个对象的一对数据收集起来,并以该对象替换它们:Preserve Whole Object。
如果缺乏合理的对象归属,可以制造出一个参数对象:Introduce Parameter Object
五、Divergent Change(发散式变化)
Divergent Change:某个类经常在不同的原因在不同的方向上发生变化。找出某特定原因而造成的所有变化,提炼到另一个类中:Extract Class
六、Shotgun Surgery(霰弹式修改)
Shotgun Surger:每遇到某种变化,都必须在许多不同的类内做出许多小修改。如果修改的代码散布四处,很难找到,并且容易忘记。所有需要修改的代码放进同一个类:Mvoe Method和Move Field
Divergent Change:一个类受多种变化的影响
Shotgun Surger:一种变化引发多个类相应修改
七、Feature Envy(依恋情节)
使用Extract Method把这一部分提炼到独立函数中,然后把函数移到该去的地方:Mvoe Method八、Data Clumps(数据泥团)
Data Clumps:两个类中相同的字段、许多函数签名中相同的参数,总是出现Extract Class提到到一个独立的对象,运用Introduce Parameter Object 或Preserve Whole Object 将很多参数列缩短,简化函数调用。
九、Primitive Obsession(基本类型偏执)
将单独存在的数据值替换为对象:Replace Data Value with Object替换的数据值是类型码Replace Type Code with Class
相关文章推荐
- 代码重构 & 代码中的坏味道
- 代码的坏味道——何时该考虑代码的重构(重构—读书笔记系列)
- 代码坏味道与重构
- 代码中坏味道和对应重构方法——摘自《重构,改善既有代码的设计》
- 《重构---改善既有代码的设计》总结二之代码的坏味道
- 重构 改善既有代码的设计——代码的坏味道
- 读书笔记之《重构》第三章—代码的坏味道
- 代码坏味道——重构
- 重构——代码的坏味道
- 重构——代码坏味道
- 代码坏味道 重构: 改善有效代码的设计--阅读笔记
- 『重构--改善既有代码的设计』读书笔记----代码坏味道【5】
- 重构_改善既有代码的设计-代码的坏味道-纪要
- 代码的坏味道之五 ——译自《重构》
- 代码的坏味道——代码重构之php代码重构(1.前言)
- 代码坏味道——重构
- 『重构--改善既有代码的设计』读书笔记----代码坏味道【1】
- 代码重构-寻找坏味道
- 代码中的坏味道-->ruby重构有感(二)--未完待续!
- 代码重构/坏味道详解