重构——47以明确函数取代参数(Replace Parameter with Explicit Methods)

简介: 以明确函数取代参数(Replace Parameter with Explicit Methods):你有一个函数,其中完全取决于参数值而采取不同的行为;针对该参数的每一个可用值,建立一个独立函数

以明确函数取代参数(Replace Parameter with Explicit Methods)

你有一个函数,其中完全取决于参数值而采取不同的行为;针对该参数的每一个可用值,建立一个独立函数

一、动机

1、根据不同参数值作出不同的行为,那么就应该使用本项重构

2、接口更加清楚

二、做法

1、针对参数的每一种可能性,新建一个明确函数

2、修改表达式的每个分支,使其调用合适的新函数

3、修改每个分支后,编译并测试

4、修改原函数的每一个被调用点,改而调用上述的某个合适的新函数

5、编译,测试

6、所有调用端都修改完毕后,删除原函数

目录
相关文章
|
4月前
|
编译器 C++ 开发者
C++一分钟之-返回值优化与Move Semantics
【6月更文挑战第19天】C++的RVO与移动语义提升效率,减少对象复制。RVO是编译器优化,避免临时对象的创建。移动语义通过右值引用和`std::move`转移资源所有权。注意RVO不是总有效,不应过度依赖。使用移动语义时,避免误用`std::move`导致对象无效。示例展示了RVO和移动构造函数的应用。理解并恰当使用这些机制能写出更高效代码。
45 3
|
4月前
call()与apply()的作用与区别?
call()与apply()的作用与区别?
|
存储 设计模式 Go
Go 函数选项模式(Functional Options Pattern)
本文对 Go 函数选项模式(Functional Options Pattern)进行了详细介绍,并通过封装一个消息结构体的例子,展示了如何使用函数选项模式进行代码实现。
163 0
|
测试技术 API
避免修改构造函数输入参数引起的 breaking change
避免修改构造函数输入参数引起的 breaking change
|
人工智能 Java
getParameter方法的用法
getParameter方法的用法
abap开发function module时使用tables传递参数报错过时的解决方法
如下图,我写了一个Function Module我要在tables中添加一个参数TABLES参数已过时不管怎么点击保存按钮,一直报错,怎么办呢?不管是不是过时,狂点回车,就保存了
1732 0
重构——49以函数取代参数(Replace Parameter with Methods)
以函数取代参数(Replace Parameter with Methods):对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数;让参数接受者去除该项参数,并直接调用前一个参数
1714 0
重构——50引入参数对象(Introduce Parameter Object)
引入参数对象(Introduce Parameter Object):Range模式;某些参数总是很自然的同时出现;以一个对象取代这些参数
1757 0
重构——43添加参数(Add Parameter)
添加参数(Add Parameter):某个函数需要从调用端得到更多信息;为此函数添加一个对象,让该对象带进函数所需信息
1503 0