Parameterize Method(令函数携带参数)
若干函数做了类似的工作,但在函数本体中却包含了不同的值。
建立单一函数,以参数表达那些不同的值。
1.动机
- 两个函数做着类似的工作,但因少数几个值致使行为略有不同。这种情况下,你可以将这些个子分离的函数统一起来,并通过参数来处理那些变化情况,用以简化问题。这样的修改可以去除重复的代码,并提高灵活性,因为你可以用这个参数处理更多的变化情况。
2.做法
- 新建一个带有参数的函数,使它可以替换先前所有的重复性函数。
- 编译。
- 将调用旧函数的代码改为调用新函数。
- 编译,测试。
- 对所有旧函数重复上述步骤,每次替换后,修改并测试。
也许你会发现,你无法用这种办法处理整改函数,但可以处理函数中的一部分代码。这种情况下,你应该首先将这部分代码提炼到一个独立函数中,然后再对那个提炼所得的函数使用Parameterize Method。
3.范例
本重构的终点在于:以“可将少量数值视为参数”为依据,找出带有重复性的代码。
Parameterize Method(令函数携带参数)相关推荐
- 重构函数调用-Parameterize Method令函数携带参数五
重构函数调用-Parameterize Method令函数携带参数五 1.令函数携带参数 1.1.使用场景 若干函数做了类似的工作,但在函数本体中却包含了不同的值.建立单一函数,以参数表达那些不同的值 ...
- 【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )
文章目录 前言 一.Groovy 中函数实参自动类型推断 二.函数动态参数注意事项 三.完整代码示例 前言 Groovy 是动态语言 , Java 是静态语言 ; 本篇博客讨论 Groovy 中 , ...
- Python之pandas:pandas.set_option函数的参数详细解释
Python之pandas:pandas.set_option函数的参数详细解释 目录 pandas.set_option函数的参数解释 函数API:pandas.set_option pandas. ...
- 将函数当做参数 matlab,Matlab中如何将(自定义)函数作为参数传递给另一个函数...
假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...
- 【php7扩展开发四】函数的参数 ,引用传参 ,返回值
函数参数解析 之前我们定义的函数没有接收任何参数,那么扩展定义的内部函数如何读取参数呢?用户自定义函数在编译时会为每个参数创建一个zend_arg_info结构,这个结构用来记录参数的名称.是否引用传 ...
- React Native之通过createStackNavigator实现携带参数的页面与页面之间的跳转
1 实现的功能 在网上看React Native文档,我特码就想实现一个页面到另外一个页面的跳转,然后另外一个页面怎么获取参数,特么没找到一个说清楚的,要么太复杂,要么说了不理解,下面是我自己写的一 ...
- js有默认参数的函数加参数_函数参数:默认,关键字和任意
js有默认参数的函数加参数 PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) Think that you are writing a function that ...
- python中__init__函数以及参数self
1.class类包含: 类的属性:类中所涉及的变量 类的方法:类中函数 2. _init_函数(方法) 首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问. ini ...
- python函数修饰参数_Python 函数参数的填坑之路
背景 最近在看廖雪峰老师的python3教程之函数的参数 受益匪浅,但是在实践的过程中,发现了一些不解之谜 两个错误import _thread import time def func1(x): w ...
- 函数传参数_算法笔记(7)第二章C、C++快速入门函数,main函数,
#includevoid change(int x){ x=x+1;}int main(){ int x=10; change(x); prinf("%d\n",x); retur ...
最新文章
- jquery Ajax 通过jsonp的方式跨域提交表单
- Oracle12c 在windonServer2012中安装的步骤
- layer.js载入失效问题
- golang 反射_云原生的 Java与Golang
- mysql搭建主主_mysql主主配置
- 用matlab绘制一个时钟
- 轻量级开源小程序SDK发车啦
- Web Js 按键事件……Enter提交事件 Enter Js事件
- [react] 为什么建议setState的第一个参数是callback而不是一个对象呢?
- Qt笔记-QSerialPort的使用(串口通信简单实例)
- WordPressmodown收费模板
- 大数相关计算(c语言版)
- 封装element分页组件
- 【汇编语言】程序格式
- asp.net程序中最常用的三十三种编程代码(转自CSDN)
- [51单片机] 四相五线减速比为1/64步进电机驱动设计
- 2020-08-18 每日一句
- 使用dsoFramer开始Office应用程序
- 【2021亲测有效】彻底解决Google地球、Google Earth、谷歌地球启动无法连接到登录服务器、启动黑屏、无法查看历史影像图的方法
- java、Dom4j、循环迭代递归解析XML,不论是否是叶子节点、有复合结构
热门文章
- 饥荒控制台输入没用_饥荒控制台怎么使用?饥荒控制台代码应该怎么输入?_图文攻略_高分攻略_百度攻略...
- python 图片转换为ico图标
- iPhone出现白苹果怎么修复?简单3步即可解决
- 实习日记5:过滤器+批量删除+角色管理
- VC++6.0如何找到“丢失”的对话框控件工具箱
- 物联计算机大赛,计算机与物联网学院在本次计算机设计大赛中喜获佳绩
- Trianglify - 生成五彩缤纷的 SVG 背景图案
- Linux性能优化——如何测试网络延迟
- Justinmind使用教程(2)——计算表达式及条件使用方法
- 计算机29首流行音乐叫什么,2018结婚用的歌曲排名 50首流行歌曲燃爆婚礼现场...