重构代码设计精要

简介: 重构代码设计精要
  1. extract method 提炼方法 (110)

    将代码放进一个独立函数中,并让函数名称解释该函数的用途

  2. pull up field 字段上移 (332)

    两个子类拥有相同的字段,将该字段移动到超类。

  3. extract class 提炼类(149)

    某个类做了应有两个类做的事,建立一个新类,将相关字段和函数从旧类搬到心类。

  4. move method 搬移函数

    程序中,有个函数与其所驻类之外的另一个类进行更过交流,调用后者,或被后者调用,在该函数最常引用的类中建立一个新函数,将旧函数变成一个单纯的委托函数,或是将旧函数完全移除。

  5. encapsulate field 封装字段

    将其声明为private,并提供相应的访问函数。安全问题,如果不封装其他地方修改对象中的属性,该对象的使用者并不知情。

  6. move field 搬移字段

    与4相同意思。

  7. duplicated code 重复代码 (76)
  8. form template method 塑造模板函数 (345)

    你有一些子类,其中相应的某些函数,以相同的顺序执行类似的操作,但各个操作的细节上有所不同。

    将这些操作分别放进独立函数中,并保持他们都有相同的签名。于是原函数也变得相同了,将原函数上移到超类。

    调用的时候调用超类中的原函数,通过多态指定调用的子类。

    设计模式中的Template method 注重顺序。(我现在做的项目中edi导出报文使用的就是模板方法模式)

  9. substitute Algorithm 替换算法 (139)

    将函数本体替换为另一个算法(注意if判断固定几个值时,可以把固定的几个值放入集合中 139)

  10. replace temp with query 以查询取代临时变量 (120)

    你的程序以一个临时变量保存某一表达式的运算结果,将这个表达式提炼到一个独立函数,将这个临时变量的所有引用点替换为对新函数的调用,此后,新函数就可以被其他函数调用。

  1. split temporary variable 分解临时变量

    你的程序某个临时变量被幅值超过一次,他即不是循环变量,也不被用于收集计算结果,针对每一次赋值,创造一个对立的,对应的临时变量(final)

  2. Intriduce paramter object 引入参数对象( 295)

    某些参数总是很自然的同时出现,以一个对象取代这些参数。(如startDate,endDate)

  3. preserve whole object 保持对象完整 (288)

    你从某个对象取出若干值,将他们作为某一次函数调用时的参数,改为传递整个对象。

  4. replace method with method object 以函数对象取代函数 (135)

    你有一个大型函数,其中对局部变量的使用使你无法采用提炼函数,将这个函数放进一个单独对象中,如此以来局部变量就变成了对象中的一个字段,然后你可以在同一个对象中将大型函数分解成多个小型函数。

  1. decompose conditional 分解条件表达式 (238)

    有一个复杂的条件表达式语句,从 if then else 三个段落中分别提炼独立函数。(每一个等号都有其特定意义,通过函数名称标注)

  1. extract interfact 提炼接口 (341)

    若干客户使用类接口中的同一子集,或者两个类的接口有部门相同,将相同的子集提炼到一个独立接口中。(接口弥补了继承,通用也可以通过继承的方式理解接口类与实现类)

  1. Long parameter list 过长参数列

    太长参数类导致难以理解。太多参数会造成前后不一致,不易使用,而且一旦你需要更多数据,旧不得不修改他。

  2. inline class 将类内联化 (154)

    某各类没有做太多事情,将这个类所有特性搬移到另一个类中,然后移除原类。与提炼类相反。

相关文章
|
10月前
|
设计模式 算法 Java
设计模式第十五讲:重构 - 改善既有代码的设计(下)
设计模式第十五讲:重构 - 改善既有代码的设计
260 0
|
3月前
|
算法
代码重构:优化之道
代码重构:优化之道
|
10月前
|
设计模式 Java 测试技术
设计模式第十五讲:重构 - 改善既有代码的设计(上)
设计模式第十五讲:重构 - 改善既有代码的设计
283 0
|
数据处理
《重构2》第六章-重构基础
《重构2》第六章-重构基础
296 0
|
设计模式 Java 测试技术
把书读薄 | 《设计模式之美》规范与重构(上)(二)
本文是 规范与重构 (15-33) 的浓缩总结,同上,把实战部分(34-37) 拆到下节,这部分主要是一些编码建议和规范,过一遍,自己写代码注意下就好,比较简单。 二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。
135 0
|
设计模式 消息中间件 IDE
设计模式之美(一)——设计原则、规范与重构
  《设计模式之美》是极客时间上的一个代码学习系列,在学习之后特在此做记录和总结。
设计模式之美(一)——设计原则、规范与重构
|
设计模式 IDE 开发工具
把书读薄 | 《设计模式之美》规范与重构(上)(三)
本文是 规范与重构 (15-33) 的浓缩总结,同上,把实战部分(34-37) 拆到下节,这部分主要是一些编码建议和规范,过一遍,自己写代码注意下就好,比较简单。 二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。
123 0
|
设计模式 测试技术 程序员
把书读薄 | 《设计模式之美》规范与重构(上)(一)
节后第一天,本文是 规范与重构 (15-33) 的浓缩总结,同上,把实战部分(34-37) 拆到下节,这部分主要是一些编码建议和规范,过一遍,自己写代码注意下就好,比较简单。 二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。
118 0
|
Cloud Native 算法 前端开发
如何面向对象做好重构?|83行代码
由阿里云云效主办的2021年第3届83行代码挑战赛已经收官。超2万人围观,近4000人参赛,85个团队组团来战。大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎。本文作者:83行代码优秀参赛选手。
317 0
如何面向对象做好重构?|83行代码