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

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

搬移函数(Move Method)

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

一、动机

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

二、做法

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

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

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

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

5、编译目标类

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

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

8、编译测试

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

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

11、编译,测试

目录
相关文章
|
4月前
|
存储 算法 编译器
【C++ 函数尾部返回】C++中的尾返回类型:探究auto func() -> ReturnType的魔力
【C++ 函数尾部返回】C++中的尾返回类型:探究auto func() -> ReturnType的魔力
145 1
|
3月前
|
编译器 C++ 开发者
C++一分钟之-返回值优化与Move Semantics
【6月更文挑战第19天】C++的RVO与移动语义提升效率,减少对象复制。RVO是编译器优化,避免临时对象的创建。移动语义通过右值引用和`std::move`转移资源所有权。注意RVO不是总有效,不应过度依赖。使用移动语义时,避免误用`std::move`导致对象无效。示例展示了RVO和移动构造函数的应用。理解并恰当使用这些机制能写出更高效代码。
42 3
用 Block 重构代码的几种方法
用 Block 重构代码的几种方法
普通函数中的this指向问题解决方案call
普通函数中的this指向问题解决方案call
47 0
|
前端开发
前端小案例1-call和apply的重写1 原
前端小案例1-call和apply的重写1 原
66 0
前端小案例1-call和apply的重写1 原
|
编译器
新年第一问,请解释一下extend和super泛型中list操作的区别?
新年第一问,请解释一下extend和super泛型中list操作的区别?
91 0
|
SQL Oracle 关系型数据库
测试3——探究shrink和move原理
shrink操作的机制: 我们接下来讨论一下shrink的实现机制,我们同样使用讨论move机制的那个实验来观察.SQL> create table TEST_HWM (id int ,name char(2000)) tablespace ASSM;T...
942 0
重构——60函数下移(Push Down Method)
函数下移(Push Down Method):超类中的某个函数只与部分子类有关;将这个函数移到相关的子类中去
1588 0
重构——58函数上移(Pull Up Method)
函数上移(Pull Up Method):有些函数,在各个子类中产生完全相同的结果;将该函数移至超类
1901 0
重构——11搬移字段(Move Field)
搬移字段(Move Field):你的程序中,某个字段被其所驻类之外的另一个类更多的用到。在目标类新建一个字段,修改源字段的所有用户,令它们该用新字段
1383 0