重构——43添加参数(Add Parameter)

添加参数(Add Parameter)

某个函数需要从调用端得到更多信息;为此函数添加一个对象,让该对象带进函数所需信息

一、动机

你必须修改一个函数,而修改后的函数需要一些过去没有的信息,因此你要给函数添加一个参数

二、做法

1、检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤

2、声明一个新函数,名称与原函数相同,只是加上新添参数。将旧函数代码复制到新函数中

3、编译

4、修改旧函数,令它调用新函数

5、编译,测试

6、找出旧函数所有的引用点,将它们全部修改为对新函数的引用。每次修改后,编译并测试

7、删除旧函数,或者deprecated

8、编译,测试

时间: 2024-10-24 17:09:23

重构——43添加参数(Add Parameter)的相关文章

重构——50引入参数对象(Introduce Parameter Object)

引入参数对象(Introduce Parameter Object) Range模式:某些参数总是很自然的同时出现:以一个对象取代这些参数 一.动机 1.碰到数据泥团,我们可以运用一个对象包装这些数据,那怕只是为了把这些数据组织在一起,这样做也是值得的 2.可以把这些参数的共同处理移到新对象中,减少重复代码 二.做法 1.新建一个类,用以表现你想替换的一组参数,将这个类设为不可变的 2.编译 3.针对使用改组参数的所有函数,实施Add Parameter,传入上述新建类的实例对象,并将此参数值设

Hier block添加参数

在GRC中生成Hier block时为了提高灵活性,往往需要在对模块添加参数,这样就可以在顶层模块中对Hier block中的某些变量进行设定了. 需要在Hier block中通过parameter模块设置参数,然后在generate Hier block后就可以看到可设定的parameter了,注意不能使用variable

asp.net SqlParameter如何根据条件有选择的添加参数

 有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数,下面有个示例,大家可以参考下       SqlParameter带参数的增删改查语句,可以防止注入.有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数. 一般方法 DAL层方法 代码如下: public UserInfo GetAll(UserInfo a) { string strSql = "select id,name,code,password from [tb].

asp.net SqlParameter如何根据条件有选择的添加参数_实用技巧

SqlParameter带参数的增删改查语句,可以防止注入.有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数. 一般方法 DAL层方法 复制代码 代码如下: public UserInfo GetAll(UserInfo a) { string strSql = "select id,name,code,password from [tb].[dbo].[User] where 1=1"; strSql += " and [id]=@id&

asp.net通过HttpModule自动在Url地址上添加参数_实用技巧

然而手机客户端又不支持Session和Cookie传值,其他方法给页面赋值再传值显得太麻烦了,而且还不易维护,容易弄丢出错,于是想到了用HttpModule来把cid参数赋在Url地址上,让url把cid参数每页自动传递下去,需要用cid时只要通过Requet["cid"]获取,这样就不用为传值而烦恼了. 以下是配置方法和源码. 1)在web.config配置文件中添加以下节点 复制代码 代码如下: <httpModules> <add name="Http

ORACLE推导参数Derived Parameter介绍

Oracle的推导参数(Derived Parameters)其实是初始化参数的一种.推导参数值通常来自于其它参数的运算,依赖其它参数计算得出.官方文档关于推导参数(Derived Parameters)的概念如下:   Derived Parameters Some initialization parameters are derived, meaning that their values are calculated from the values of other parameters

Scala学习:叫名参数by-name parameter

上节展示的withPrintWriter方法不同于语言的内建控制结构,如if和while,在于大括号之间的代码 带了参数.withPrintWriter方法需要一个类型为PrintWriter的参数.这个参数以"writer =>"方 式显示出来: withPrintWriter(file) { writer => writer.println(new java.util.Date) } 然而如果你想要实现某些更像if或while的东西,根本没有值要传入大括号之间的代码,那

Dreamweaver构建Blog全程实录(7)-用户登录的实现

dreamweaver 第七章  Doking's BLOG用户登录页面的实现 已完成用户的注册,用户现在可以登录到网站中,发表笔记.笔记回复. 7.1  用户登录服务器行为 用户登录,经过验证正确,页面换了个用户登录后的面貌. (1)打开模板bkblog.dwt.aspx,在左边栏插入表格yhtab,并设计如图7-1黑色圈中所示. (2)插入关于YH表查询的数据集yhlog,以验证用户登录的正确. ①将数据集yhlog设为筛选,如图7-2所示. 图7-1  表格yhtab的设计图    开发全

Dreamweaver构建Blog(7):用户登录的实现2

dreamweaver 7.2  用户发表回复信息 用户登录后,就可以对 各学习笔记发表回复信息. (1)打开hf.aspx,插入表单yhplfrm,再插入表格Hftab,在表格中插入服务器文本框控件,ID为HFNAME:插入服务器文本区域控件,ID为HFTEXT:插入"发表"按钮,ID为plbottom,将其设为禁用,结果如图7-18所示. 图7-18  表格Hftab的有关设计 (3)绑定数据session("usename")到表格Hftab中的"姓