重构——60函数下移(Push Down Method)

函数下移(Push Down Method)

超类中的某个函数只与部分子类有关;将这个函数移到相关的子类中去

一、动机

使用Extract Subclass后可能需要它

二、做法

1、在所有的子类中声明该函数,将超类中的函数本体复制到每一个子类函数中

2、删除超类中的函数或者抽象它

3、编译,测试

4、将该函数从所有不需要它的那些子类中删除

5、编译,测试

时间: 2024-08-19 05:54:33

重构——60函数下移(Push Down Method)的相关文章

重构——42函数改名(Rename Method)

函数改名(Rename Method) 函数的名称未能揭示函数的用途:修改函数名称 一.动机 1.代码首先是为人写的,然后才是为计算机写的 2.想要成为一个真正的编程高手,起名的水平至关重要 二.做法 1.检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤 2.声明一个新函数,将它命名为你要要的新名称.将旧函数的代码复制到新函数中,并进行调整 3.编译 4.修改旧函数,令它将调用转发给新函数 5.编译,测试 6.找出旧函数所有的引用点,修改它们,令它们改而引用新函数.

重构——16引入外加函数(Introduce Foreign Method)

引入外加函数(Introduce Foreign Method) 你需要为提供服务的类增加一个函数,但你无法修改这个类:在客户端建立一个函数,并以第一参数形式传入一个服务类实例 一.动机 1.服务类不能提供一项新服务,你又不能修改源码 2.如果需要大量的外加函数,就Introduce Local Extension 3.外加函数是权宜之计 二.做法 1.在客户端类建立一个函数,用来提供你需要的功能,这个函数不应该调用客户端类的任何特性.如果他需要一个值,把该值当做参数传给它 2.以服务类实例作为

重构——51移除设值函数(Remove Setting Method)

移除设值函数(Remove Setting Method) 类中的某个字段应该在对象创建时被设值,然后就不再改变:去掉该字段的所有设值函数 一.动机 不希望对象被改变,就不要提供设值函数,同时final之 二.做法 1.检查设值函数被使用的情况,看它是否只被构造函数调用,或者被构造函数所调用的另一个函数调用 2.修改构造函数,使其直接访问设值函数所针对的那个变量 3.编译,测试 4.移除这个设值函数,将它所针对的字段设置为final 5.编译,测试

重构——66塑造模板函数(Form Template Method)

塑造模板函数(Form Template Method) 1.你有一些子类,其中相应的某些函数以相同顺序执行类似的操作,但各个操作的细节上有所不同 2.将这些不同的操作细节分别放进独立函数中,并保持它们都有相同的签名,于是原函数也就变得相同了.然后将原函数上移至超类 一.动机 Template Method 二.做法 1.在各个子类中分解目标函数,使分解后的各个函数要不完全相同,要不完全不同 2.运用Pull Up Mehtod将各个子类中完全相同的函数上移至超类 3.对于那些完全不同的函数,实

重构——58函数上移(Pull Up Method)

函数上移(Pull Up Method) 有些函数,在各个子类中产生完全相同的结果:将该函数移至超类 一.动机 避免重复 二.做法 1.检查待提升函数,确定它们是否完全一致 2.函数签名不同的时候,先弄成一样的 3.在超类中新建一个函数,将某一个待提升函数的代码复制到其中,做适当的调整,然后编译 4.移除一个待提升的子类函数 5.编译,测试 6.逐一移除待提升的子类函数,直到只剩下超类中的函数为止.每次移除后都需要测试 7.观察该函数的调用者,看看是否可以改为使用超类类型的对象

重构——61字段下移(Push Down Field)

字段下移(Push Down Field) 超类中某个字段只被部分子类用到:将这个字段移到需要它的子类中去 一.动机 只有某些子类需要超类中的一个字段 二.做法 1.在所有的子类中声明该字段 2.将该字段从超类中删除 3.编译,测试 4.将该字段从不需要它的子类中删除 5.编译,测试

代码重构(一):函数重构规则

重构是项目做到一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了.   重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况

PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数_php技巧

思维导图 点击下图,可以看大图. 介绍 我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写了篇<php 跟老大的对话>.还是有很多疑问,这书帮了我不少的忙. 如果你比较繁忙,或者懒得看文字,建议你直接看截图,也会有很大的收获的.你可以通过比较截图中的代码就能知道孰优孰劣了. 代码部分我为什么用图呢?因为我经常用手机看代码,博客园的代码在手机里乱七八糟的,还是看图比较舒服. 专业术语 我们毕竟是用英文字母编码,所以用一些英语单词,更能显示出我们的专业性.以下的英文单词,你如果掌握了,与其

javaScript中push函数用法实例分析_javascript技巧

本文实例讲述了javaScript中push函数用法.分享给大家供大家参考.具体分析如下: javaScript 中的 push 方法,将新元素添加到一个数组中,并返回数组的新长度值. arrayObj.push([item1   [item2   [.   .   .   [itemN   ]]]]) 参数 arrayObj,必选项.一个   Array   对象. item,   item2,.   .   .   itemN, 可选项.该   Array   的新元素. 说明 push