若干函数做了类似的工作,但在函数本体中却包含了不同的值。
建立单一函数,以参数表达那些不同的值。

1.动机

  1. 两个函数做着类似的工作,但因少数几个值致使行为略有不同。这种情况下,你可以将这些个子分离的函数统一起来,并通过参数来处理那些变化情况,用以简化问题。这样的修改可以去除重复的代码,并提高灵活性,因为你可以用这个参数处理更多的变化情况。

2.做法

  1. 新建一个带有参数的函数,使它可以替换先前所有的重复性函数。
  2. 编译。
  3. 将调用旧函数的代码改为调用新函数。
  4. 编译,测试。
  5. 对所有旧函数重复上述步骤,每次替换后,修改并测试。
    也许你会发现,你无法用这种办法处理整改函数,但可以处理函数中的一部分代码。这种情况下,你应该首先将这部分代码提炼到一个独立函数中,然后再对那个提炼所得的函数使用Parameterize Method。

3.范例


本重构的终点在于:以“可将少量数值视为参数”为依据,找出带有重复性的代码。

Parameterize Method(令函数携带参数)相关推荐

  1. 重构函数调用-Parameterize Method令函数携带参数五

    重构函数调用-Parameterize Method令函数携带参数五 1.令函数携带参数 1.1.使用场景 若干函数做了类似的工作,但在函数本体中却包含了不同的值.建立单一函数,以参数表达那些不同的值 ...

  2. 【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )

    文章目录 前言 一.Groovy 中函数实参自动类型推断 二.函数动态参数注意事项 三.完整代码示例 前言 Groovy 是动态语言 , Java 是静态语言 ; 本篇博客讨论 Groovy 中 , ...

  3. Python之pandas:pandas.set_option函数的参数详细解释

    Python之pandas:pandas.set_option函数的参数详细解释 目录 pandas.set_option函数的参数解释 函数API:pandas.set_option pandas. ...

  4. 将函数当做参数 matlab,Matlab中如何将(自定义)函数作为参数传递给另一个函数...

    假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...

  5. 【php7扩展开发四】函数的参数 ,引用传参 ,返回值

    函数参数解析 之前我们定义的函数没有接收任何参数,那么扩展定义的内部函数如何读取参数呢?用户自定义函数在编译时会为每个参数创建一个zend_arg_info结构,这个结构用来记录参数的名称.是否引用传 ...

  6. React Native之通过createStackNavigator实现携带参数的页面与页面之间的跳转

    1  实现的功能 在网上看React Native文档,我特码就想实现一个页面到另外一个页面的跳转,然后另外一个页面怎么获取参数,特么没找到一个说清楚的,要么太复杂,要么说了不理解,下面是我自己写的一 ...

  7. js有默认参数的函数加参数_函数参数:默认,关键字和任意

    js有默认参数的函数加参数 PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) Think that you are writing a function that ...

  8. python中__init__函数以及参数self

    1.class类包含: 类的属性:类中所涉及的变量 类的方法:类中函数 2. _init_函数(方法) 首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问. ini ...

  9. python函数修饰参数_Python 函数参数的填坑之路

    背景 最近在看廖雪峰老师的python3教程之函数的参数 受益匪浅,但是在实践的过程中,发现了一些不解之谜 两个错误import _thread import time def func1(x): w ...

  10. 函数传参数_算法笔记(7)第二章C、C++快速入门函数,main函数,

    #includevoid change(int x){ x=x+1;}int main(){ int x=10; change(x); prinf("%d\n",x); retur ...

最新文章

  1. jquery Ajax 通过jsonp的方式跨域提交表单
  2. Oracle12c 在windonServer2012中安装的步骤
  3. layer.js载入失效问题
  4. golang 反射_云原生的 Java与Golang
  5. mysql搭建主主_mysql主主配置
  6. 用matlab绘制一个时钟
  7. 轻量级开源小程序SDK发车啦
  8. Web Js 按键事件……Enter提交事件 Enter Js事件
  9. [react] 为什么建议setState的第一个参数是callback而不是一个对象呢?
  10. Qt笔记-QSerialPort的使用(串口通信简单实例)
  11. WordPressmodown收费模板
  12. 大数相关计算(c语言版)
  13. 封装element分页组件
  14. 【汇编语言】程序格式
  15. asp.net程序中最常用的三十三种编程代码(转自CSDN)
  16. [51单片机] 四相五线减速比为1/64步进电机驱动设计
  17. 2020-08-18 每日一句
  18. 使用dsoFramer开始Office应用程序
  19. 【2021亲测有效】彻底解决Google地球、Google Earth、谷歌地球启动无法连接到登录服务器、启动黑屏、无法查看历史影像图的方法
  20. java、Dom4j、循环迭代递归解析XML,不论是否是叶子节点、有复合结构

热门文章

  1. 饥荒控制台输入没用_饥荒控制台怎么使用?饥荒控制台代码应该怎么输入?_图文攻略_高分攻略_百度攻略...
  2. python 图片转换为ico图标
  3. iPhone出现白苹果怎么修复?简单3步即可解决
  4. 实习日记5:过滤器+批量删除+角色管理
  5. VC++6.0如何找到“丢失”的对话框控件工具箱
  6. 物联计算机大赛,计算机与物联网学院在本次计算机设计大赛中喜获佳绩
  7. Trianglify - 生成五彩缤纷的 SVG 背景图案
  8. Linux性能优化——如何测试网络延迟
  9. Justinmind使用教程(2)——计算表达式及条件使用方法
  10. 计算机29首流行音乐叫什么,2018结婚用的歌曲排名 50首流行歌曲燃爆婚礼现场...