摘要: 1.Decompose Conditional (分解条件表达式)应用场景:你有一个复杂的条件(if-then-else)语句。从if、then、else三个段落中分别提炼出独立函数。示例:if (date.before(SUMMER_START) || date.after(SUMMER_END) 阅读全文
posted @ 2019-12-07 18:15 流浪的小丑 阅读(377) 评论(0) 推荐(1) 编辑
摘要: 何时重构 如何重构 代码坏味道 Duplicated Code(重复代码) 重新组织函数 Extract Method(提炼函数) Long Method(过长函数) Inline Method(内联函数) Large Class(过大的类) Inline Temp(内联临时变量) Long Par 阅读全文
posted @ 2019-11-13 11:43 流浪的小丑 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 1 工厂模式(Factory) 1.1 简单工厂模式 1.2 工厂方法模式 1.3 抽象工厂模式 2 单例模式(Singleton) 3 建造模式(Build) 4 原型模式(Proto) 5 适配器模式(Adapter) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接 阅读全文
posted @ 2019-10-24 14:16 流浪的小丑 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 1 分治算法 1.1 基本概念 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并 1.2 典型问题 1.2.1 二分搜索 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通 阅读全文
posted @ 2019-10-24 14:03 流浪的小丑 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 1. Move Method(搬移函数) 在该函数最常用的勒种简历一个有着类似行为的新函数,将就函数变成一个单纯的委托函数,或是将就函数完全移除。 应用场景:搬移函数是重构理论的支柱,如果一个类有太多行为,或者一个类与另一个类有太多合作而形成高度耦合,我们就需要搬移函数。通过这种手段,我们可以使系统 阅读全文
posted @ 2019-10-24 11:46 流浪的小丑 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1. Extract Method(提炼函数) 将代码段放进一个独立函数中,并让函数名称解释该函数的用途。 示例: void printOwing(double amount) { printBanner(); //print details System.out.println("name: " 阅读全文
posted @ 2019-10-20 00:03 流浪的小丑 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 前言:最近做一个特性,参照原有逻辑增加某个功能,老代码本身存在两套相似的流程,再添加上一套流程后,发现代码的重复度及其的高,基本可以理解为一套框架流程复制出来3个类,给3个功能使用。我对比了每个类的代码后,发现代码重复度基本在50%以上,这种代码真是越写越烂的感觉。于是费力的做了一下重构,搞了个父类 阅读全文
posted @ 2019-10-19 01:08 流浪的小丑 阅读(271) 评论(0) 推荐(0) 编辑