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

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

做法:1、新建一个带有参数的函数,使它可以替换先前所有的重复性函数。

2、编译。

3、将调用旧函数的代码改为调用新函数。

4、编译、测试。

5、对所有旧函数重复上述步骤,每次替换后,修改并测试。

也许你会发现,你无法用这种方法处理整个函数,但可以处理函数中的某一部分代码。这种情况下,你应该首先将这部分代码提炼到一个独立函数中,然后再对那个提炼所得的函数使用Parameterize Method (令函数携带参数)。

转载于:https://www.cnblogs.com/matchcolor/archive/2010/08/10/1786432.html

重构手法46:Parameterize Method (令函数携带参数)相关推荐

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

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

  2. 重构手法——提炼函数、搬移函数、以多态取代条件表达式

    目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...

  3. 重构手法之重新组织函数

    重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释).重新组织函数的驱动力,往往都是由于函数过长.因为函数过长就以为着包含 ...

  4. 重构手法之简化函数调用【1】

    返回总目录 本小节目录 Rename Method(函数改名) Add Parameter(添加参数) Remove Parameter(移除参数) 1Rename Method(函数改名) 概要 函 ...

  5. 重构改善既有代码设计--重构手法19:Replace Data Value with Object (以对象取代数据值)...

    你有一笔数据项(data item),需要额外的数据和行为. 将这笔数据项变成一个对象. class Order... private string customer; ==> class Or ...

  6. 斐波那契法(Faboncci Method)求函数最大值的Python程序

    斐波那契法(Fibonacci method)又称斐波那契分数法,是一种一维搜索的区间消去法(区间消去法(interval elimination method)求单变量函数无约束极值的较实用的一类直 ...

  7. 自学Python 46 日期和时间函数(一)

    Python 日期和时间函数 之 使用时间模块 文章目录 Python 日期和时间函数 之 使用时间模块 一.使用时间模块 (1)函数 time.altzone (2)函数time.asctime([ ...

  8. ucos ii 46个系统API函数解析 .

    2012-08-01 11:41 106人阅读 评论(0) 收藏 编辑 删除 Void OSInit(void); 所属文件 OS_CORE.C    调用者启动代码   开关量无 OSinit()初 ...

  9. Golang——秒懂函数、参数、可变参数、匿名函数、回调函数、内置函数

    函数: 函数是结构化编程的最小模块单元.它将复杂的算法过程分解为若干较小任务,隐藏相关 细节,使得程序结构更加清晰,易于维护.函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果 ...

  10. Python基本语法_函数_参数的多类型传值

    前言 上一篇主要介绍了Python函数的参数类型,本篇继续学习Python函数多类型传值. 目录 前言 目录 软件环境 参数的多类型传值 向函数传递Tuple 向函数传递List 向函数传递Dicti ...

最新文章

  1. VS2017登陆不了,TFS无法连接成功的问题
  2. upper_bound()与lower_bound函数的使用
  3. 认识Mahout下的云计算机器学习
  4. 图卷积 节点分类_在节点分类任务上训练图卷积网络
  5. Android 仪表盘
  6. 常用并发工具类(并发集合类)
  7. Power BI 夜校完美收官-所有视频资料可下载
  8. 分享我的Latex模板(数学建模/论文通用,附下载链接)
  9. 开源dns软件PowerDNS BIND9 mydns
  10. windowsXP操作系统的基本功能
  11. 任小龙 mysql笔记_小码哥-任小龙Java笔记-面向对象的全部笔记.pdf
  12. win7计算机闪屏,win7电脑闪屏是什么原因
  13. 使用linux,导出mysql数据库信息,连接聚石塔
  14. 2021最新Java面试真题解析!java开发技能掌握
  15. linux 串口 arduino,linux通过串口对arduino读写
  16. 职场打拼小妙招,建议你们收藏使用!
  17. matlab读取wav文件出错,MATLAB读取wav文件
  18. 初等行变换不改变列向量组的线性关系
  19. 2016年书单和电影
  20. 云课堂智慧职教答案python_2020智慧职教云课堂Python编程基础答案完整满分单元测试答案...

热门文章

  1. <C++>继承的进阶之构造与析构的调用顺序和同名成员的处理
  2. js的this指向总结
  3. 计算机语言学习书籍目录资源自己找(到处复制粘贴的目录)
  4. U盘系统、格式化等问题的解决办法
  5. golang 求差集和并集算法
  6. 程序猿郭小喵曾经的实习故事
  7. 景联文科技入选全国信息技术标准化技术委员会生物特征识别技术委员会
  8. oracle数据库用户状态失效Expired
  9. typora问题解决:This beta version of Typora is expired
  10. 美国人口的模型预测——非线性最小二乘法