重构手法46:Parameterize Method (令函数携带参数)
若干函数做了类似的工作,但在函数本体中却包含了不同的值。建立一个单一函数,以参数表达那些不同的值。
动机:你可能会发现这样的2个函数:它们做着类似的工作,但因少数几个值致使行为略为不同。这种情况下,你可以将这些各自分离的函数统一起来,并通过参数来处理那些变化,用以简化问题。这样的修改可以去除重复代码,并提高灵活性,因为你可以用这个参数处理更多的变化情况。
做法:1、新建一个带有参数的函数,使它可以替换先前所有的重复性函数。
2、编译。
3、将调用旧函数的代码改为调用新函数。
4、编译、测试。
5、对所有旧函数重复上述步骤,每次替换后,修改并测试。
也许你会发现,你无法用这种方法处理整个函数,但可以处理函数中的某一部分代码。这种情况下,你应该首先将这部分代码提炼到一个独立函数中,然后再对那个提炼所得的函数使用Parameterize Method (令函数携带参数)。
转载于:https://www.cnblogs.com/matchcolor/archive/2010/08/10/1786432.html
重构手法46:Parameterize Method (令函数携带参数)相关推荐
- 重构函数调用-Parameterize Method令函数携带参数五
重构函数调用-Parameterize Method令函数携带参数五 1.令函数携带参数 1.1.使用场景 若干函数做了类似的工作,但在函数本体中却包含了不同的值.建立单一函数,以参数表达那些不同的值 ...
- 重构手法——提炼函数、搬移函数、以多态取代条件表达式
目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...
- 重构手法之重新组织函数
重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释).重新组织函数的驱动力,往往都是由于函数过长.因为函数过长就以为着包含 ...
- 重构手法之简化函数调用【1】
返回总目录 本小节目录 Rename Method(函数改名) Add Parameter(添加参数) Remove Parameter(移除参数) 1Rename Method(函数改名) 概要 函 ...
- 重构改善既有代码设计--重构手法19:Replace Data Value with Object (以对象取代数据值)...
你有一笔数据项(data item),需要额外的数据和行为. 将这笔数据项变成一个对象. class Order... private string customer; ==> class Or ...
- 斐波那契法(Faboncci Method)求函数最大值的Python程序
斐波那契法(Fibonacci method)又称斐波那契分数法,是一种一维搜索的区间消去法(区间消去法(interval elimination method)求单变量函数无约束极值的较实用的一类直 ...
- 自学Python 46 日期和时间函数(一)
Python 日期和时间函数 之 使用时间模块 文章目录 Python 日期和时间函数 之 使用时间模块 一.使用时间模块 (1)函数 time.altzone (2)函数time.asctime([ ...
- ucos ii 46个系统API函数解析 .
2012-08-01 11:41 106人阅读 评论(0) 收藏 编辑 删除 Void OSInit(void); 所属文件 OS_CORE.C 调用者启动代码 开关量无 OSinit()初 ...
- Golang——秒懂函数、参数、可变参数、匿名函数、回调函数、内置函数
函数: 函数是结构化编程的最小模块单元.它将复杂的算法过程分解为若干较小任务,隐藏相关 细节,使得程序结构更加清晰,易于维护.函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果 ...
- Python基本语法_函数_参数的多类型传值
前言 上一篇主要介绍了Python函数的参数类型,本篇继续学习Python函数多类型传值. 目录 前言 目录 软件环境 参数的多类型传值 向函数传递Tuple 向函数传递List 向函数传递Dicti ...
最新文章
- VS2017登陆不了,TFS无法连接成功的问题
- upper_bound()与lower_bound函数的使用
- 认识Mahout下的云计算机器学习
- 图卷积 节点分类_在节点分类任务上训练图卷积网络
- Android 仪表盘
- 常用并发工具类(并发集合类)
- Power BI 夜校完美收官-所有视频资料可下载
- 分享我的Latex模板(数学建模/论文通用,附下载链接)
- 开源dns软件PowerDNS BIND9 mydns
- windowsXP操作系统的基本功能
- 任小龙 mysql笔记_小码哥-任小龙Java笔记-面向对象的全部笔记.pdf
- win7计算机闪屏,win7电脑闪屏是什么原因
- 使用linux,导出mysql数据库信息,连接聚石塔
- 2021最新Java面试真题解析!java开发技能掌握
- linux 串口 arduino,linux通过串口对arduino读写
- 职场打拼小妙招,建议你们收藏使用!
- matlab读取wav文件出错,MATLAB读取wav文件
- 初等行变换不改变列向量组的线性关系
- 2016年书单和电影
- 云课堂智慧职教答案python_2020智慧职教云课堂Python编程基础答案完整满分单元测试答案...