重构——10搬移函数(Move Method)

搬移函数(Move Method)

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

一、动机

减少类之间的耦合,是系统中的类更简单,更干净利落的完成系统交付的任务

二、做法

1、检查源类中被原函数所使用的一切特性,考虑它们是否也应该被搬移。考虑是否要将使用相同特性的函数一并搬移

2、检查源类的超类和子类,看看是否有该函数的其他声明

3、在目标类中声明这个函数

4、将原函数代码复制到目标函数中。调整后者,使其在新家中能够正常运行

5、编译目标类

6、决定如何从源函数正确的引用目标对象

7、修改源函数,使之成为一个纯委托函数

8、编译测试

9、决定是否删除源函数,或将它当做一个委托函数保留下来

10、如果要移除源函数,请将源类中对函数的所有调用,替换为对目标函数的调用

11、编译,测试

时间: 2024-07-30 12:17:48

重构——10搬移函数(Move Method)的相关文章

重构——11搬移字段(Move Field)

搬移字段(Move Field) 你的程序中,某个字段被其所驻类之外的另一个类更多的用到.在目标类新建一个字段,修改源字段的所有用户,令它们该用新字段 一.动机 在类之间移动状态和行为很正常 二.做法 1.如果字段的访问级别是public,使用Encapsulate Field将它封装起来 2.编译,测试 3.在目标类中建立与源字段相同的字段,并同时建立相应的设值/取值函数 4.编译目标类 5.决定如何在源对象中引用目标对象 6.删除源字段 7.将所有对源字段的引用替换为对某个目标函数的调用 8

PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性_php技巧

思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类合并到其他类中) Ø Hide Delegate (隐藏委托关系) Ø Remove Middle Man ( 移除中间人) Ø Introduce Foreign Method (引入外加函数) Ø Introduce Local Extension (引入本地扩展)    介绍    承接上文P

重构 对象之间搬移特性

Move Method 如果一个类中的方法与另一个类有很多的交流,那么我们就在另一个类中建立一个有类似功能的新函数,将旧函数变成一个单纯的Delegating Method, 或是将旧函数移除. Move Field  状况:你的class中的field被另一个class更多的用到.那么在另一个class里建立new field,修改旧的field. Extract Class 状况:一个类做了两个类做的事,那么建立一个新Class,将相关的Field和Method从旧Class移到新Class

在Delphi中实现对目录拷贝、删除和搬移的操作

笔者在工作中遇到了需要对目录进行拷贝.删除和搬移的需求,Delphi本身提供了一些目录操作函数,但只是针对空目录而言,对目录下带有子目录的情况,更是无能为力. 利用Win32 API函数和结构,以及递归的程序设计思想,笔者实现了对任意目录进行拷贝.删除和搬移的功能(分别相当于DOS中的XCopy.DelTree和Move命令).以下分别给出了实现代码: 1.拷贝目录 为了能拷贝目录下带有子目录的情况,先定义一个辅助的拷贝函数,它是递归执行的,直到把目录下的所有文件和子目录都拷贝完. 1.1拷贝目

《数据科学:R语言实现》——1.10 处理函数中的错误

1.10 处理函数中的错误 如果你对现代编程语言比较熟悉,你应该已经在开发过程中,使用try.catch以及block函数解决过可能的错误.R语言在函数中也提供了类似的错误处理方案.因此,你可以在R代码中添加错误处理机制来使程序变得更加健壮.在本教程中,我们会介绍R中基本的错误处理函数. 准备工作 确保你已经在操作系统中安装了R语言,完成了之前的步骤. 实现步骤 执行下列步骤,来处理函数中的错误. 首先,查看错误信息: 在用户定义的函数中,如果结果与预期不同,我们也可以使用stop打印出错误信息

清理Win7系统盘把用户文件夹搬移

由于一些新电脑在进行磁盘分区时,留给系统盘的空间不够大,并且随着日常电脑使用,软件不断安装数据信息不断写入系统盘空间变得吃紧,不但影响系统响应速度也影响整体效能,因此我们可以把用户文件夹从Win7系统盘搬移到其他磁盘中去,给Win7系统盘留下足够的空间,这也是Win7优化经常使用的技巧之一.在上一篇文章中,我们和大家分享了如何在安装Win7系统的过程中实现用户文件夹的搬移操作,但很多朋友遇上这个问题时却是在Win7系统安装后使用过程中出现的,这个时候我们仍然可以通过操作来清理Win7系统盘,以下

清理Windows 7系统盘把用户文件夹搬移

由于一些新电脑在进行磁盘分区时,留给系统盘的空间不够大,并且随着日常电脑使用,软件不断安装数据信息不断写入系统盘空间变得吃紧,不但影响系统响应速度也影响整体效能,因此我们可以把用户文件夹从Win7系统盘搬移到其他磁盘中去,给Win7系统盘留下足够的空间,这也是Win7优化经常使用的技巧之一.在上一篇文章中,我们和大家分享了如何在安装Win7系统的过程中实现用户文件夹的搬移操作,但很多朋友遇上这个问题时却是在Win7系统安装后使用过程中出现的,这个时候我们仍然可以通过操作来清理Win7系统盘,以下

10个php函数实用却不常见_php技巧

1. sys_getloadavg() sys_getloadavt()可以获得系 统负载情况.该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1.5和15分钟内的平均负载.与其让服务器因负 载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的. 不过很遗憾,该函数在windows下无效. 2. pack() Pack() 能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间. 3. ca

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

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