随笔分类 -  [24]【重构列表】

摘要:【1】源代码 【2】引入本地扩展(子类 或 包装类) 【3】总结 你需要为服务类提供一些额外函数,但你无法修改这个类。 建立一个新类,使它包含这些额外函数。让这个扩展品成为源类的子类或包装类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 11:35 kaizenly 阅读(286) 评论(0) 推荐(0) 编辑
摘要:【1】场景 你需要为提供服务的类增加一个函数,但你无法修改这个类。在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。 【2】动机 2.1 如果真的用心体会过,这种事情应该发生太多次了。你正在使用一个类,它真的很好,为你提供了需要的所有服务。 而后,你又需要一项新服务,这个类却无法供应。于是 阅读全文
posted @ 2017-08-11 11:03 kaizenly 阅读(476) 评论(0) 推荐(0) 编辑
摘要:【1】移除中间人 该手法和[2.5 隐藏委托关系] 正好相反。正是由于相反,才能够在实际的应用中进行灵活的变通。 可能一些委托关系需要保留,而另一些却需要移除,让客户直接使用受托对象。这些都是可以随之变通的。 对于各种不同重构手法的使用,同样没有绝对的规定,都是需要依据实际灵活使用的。真所谓“唯变通 阅读全文
posted @ 2017-08-11 10:53 kaizenly 阅读(291) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】隐藏委托关系 【3】总结 客户通过一个委托类来调用另一个对象。 在服务类上建立客户所需的所有函数,用以隐藏委托关系。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 10:43 kaizenly 阅读(328) 评论(0) 推荐(0) 编辑
摘要:【1】将类内联化 将类内联化与提炼类方法相反。请参见《2.3提炼类》 【2】总结 如果某个类没有做太多事情,将这个类中的所有特性移到另外一个类中,然后删除原类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 09:31 kaizenly 阅读(283) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】提炼类 【3】总结 某个类做了应该由两个类做的事。建立一个新类,将相关的字段和函数从旧类搬移到新类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 09:24 kaizenly 阅读(289) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】搬移字段 【3】总结 程序中,某个字段被其所驻类之外的另一个类更多的用到。在目标类新建一个字段,修改源字段的所有用户,令他们改用新字段。 如果发现,对于一个字段,在其所驻类之外的另一个类中有更多函数使用了它,我就会考虑搬移这个字段。 Good Good Study, Day Da 阅读全文
posted @ 2017-08-10 19:48 kaizenly 阅读(299) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】搬移函数 【3】总结 在程序中,如果有个函数与其所驻之类的另外一个类进行更多交流,调用后者或被后者调用。 在该函数最常引用的类中建立一个有着类似行为的新函数。 将旧函数变成一个单纯的委托函数,或将旧函数完全移除。 Good Good Study, Day Day Up. 顺序 选 阅读全文
posted @ 2017-08-10 19:30 kaizenly 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】替换算法 【3】总结 想要把某个算法替换为另一个更清晰的算法。将函数本体替换为另一个算法。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 18:44 kaizenly 阅读(450) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】以函数对象取代函数 【3】总结 有一个大型函数,其中对局部变量的使用使你无法采用[1.1提炼函数]。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。 然后,你可以在同一个对象中将这个大型函数分解为多个小型函数。 Good Good Study, Day Day 阅读全文
posted @ 2017-08-10 17:44 kaizenly 阅读(666) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】移除对参数的赋值动作 【3】总结 代码对一个参数进行赋值。以一个临时变量取代该参数的位置。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 17:11 kaizenly 阅读(433) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】分解临时变量 【3】总结 有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。针对每次赋值,创造一个独立、对应的临时变量。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 16:18 kaizenly 阅读(292) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】引入解释性变量 【3】总结 程序中有一个复杂表达式。将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 16:00 kaizenly 阅读(587) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】以查询取代临时变量 【3】总结 以一个临时变量保存某一表达式的运算结果。将这个表达式提炼到一个独立函数中。 将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可以被其他函数使用。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 15:29 kaizenly 阅读(665) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】将临时变量内联化 【3】总结 有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 14:53 kaizenly 阅读(479) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 【2】函数内联化 【3】总结 一个函数的本体与名称同样清楚易懂。在函数的调用点插入函数本体,然后移除该函数。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-10 14:38 kaizenly 阅读(817) 评论(0) 推荐(0) 编辑
摘要:【1】源代码 把一个unsigned long long型数值格式转换为时间格式。 【2】提炼函数 【3】编译测试 【4】总结 有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 Good Good Study, Day Day Up. 顺序 选择 循 阅读全文
posted @ 2017-08-10 14:20 kaizenly 阅读(467) 评论(0) 推荐(0) 编辑

打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示