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

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

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

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

一、动机

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

2、接口更加清楚

二、做法

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

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

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

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

5、编译,测试

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

目录
相关文章
|
7月前
|
编译器 C++ 开发者
C++一分钟之-返回值优化与Move Semantics
【6月更文挑战第19天】C++的RVO与移动语义提升效率,减少对象复制。RVO是编译器优化,避免临时对象的创建。移动语义通过右值引用和`std::move`转移资源所有权。注意RVO不是总有效,不应过度依赖。使用移动语义时,避免误用`std::move`导致对象无效。示例展示了RVO和移动构造函数的应用。理解并恰当使用这些机制能写出更高效代码。
77 3
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
|
JavaScript 算法
js中函数内部属性arguments和this以及方法apply()和call()
js中函数内部属性arguments和this以及方法apply()和call()
重构——49以函数取代参数(Replace Parameter with Methods)
以函数取代参数(Replace Parameter with Methods):对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数;让参数接受者去除该项参数,并直接调用前一个参数
1742 0
重构——50引入参数对象(Introduce Parameter Object)
引入参数对象(Introduce Parameter Object):Range模式;某些参数总是很自然的同时出现;以一个对象取代这些参数
1786 0
重构——43添加参数(Add Parameter)
添加参数(Add Parameter):某个函数需要从调用端得到更多信息;为此函数添加一个对象,让该对象带进函数所需信息
1525 0
重构——32以State/Strategy取代类型码(Replace Type Code with State/Strategy)
以State/Strategy取代类型码(Replace Type Code with State/Strategy):你有一个类型码,它会影响到类的行为,但是你无法通过继承手法消除它;以状态对象取代类型码
1539 0
重构——26以字面常量取代魔法数(Replace Magic Number with Symbolic Constant)
以字面常量取代魔法数(Replace Magic Number with Symbolic Constant):你有一个字面数值,带有特别含义:创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量
1446 0
重构——44移除参数(Remove Parameter)
移除参数(Remove Parameter):函数本体不再需要某个函数;将该参数去除
1492 0
重构——51移除设值函数(Remove Setting Method)
移除设值函数(Remove Setting Method):类中的某个字段应该在对象创建时被设值,然后就不再改变;去掉该字段的所有设值函数
1175 0

热门文章

最新文章