Add Parameter (添加参数)

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

                                               

163716_rNay_134516.png


动机:

 Add Parameter是一个很常用的重构手法,使用这项重构的动机很简单:你必须修改一个函数,而修改后的函数需要一些过去没有的信息,因此你需要给该函数添加一个参数。

实际上我比较需要说明的是:不使用本项重构的时机。除了添加参数外,你常常还有其他选择。只要可能,其他选择都比添加参数要好,因为它们不会增加参数列的长度。过长的参数列是不好的味道,因为程序员很难记住那么多参数,而且长参数列往往伴随着坏味道Data Clumps

请看看现有的参数,然后问自己:你能从这些参数的到所需要的信息吗?如果回答是否定的,有可能通过某个函数提供所需信息吗?你究竟把这些信息用于何处?这个函数是否应该属于拥有该信息的那个对象所有?看看先有参数,考虑一下,加入新参数是否合适?也许你应该考虑使用Introduce Parameter Object

做法:  Add Parameter的做法和Rename Method非常相似。

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

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

à如果要添加的参数不止一个,将它们一次性添加进去比较容易

3.编译。

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

à如果只有少数几个地方引用旧函数,你可以大胆放心地跳过这一步骤。

à此时,你可以给参数提供任意值。但一般来说,我们会给对象参数提供null,给内置型参数提供一个明显非正常值。对于数值型参数,我们建议使用0以外的值,这样你比较容易将来认出它。

5.编译,测试。

6.找出旧函数的所有被引用点,修改它们,令它们改而引用新函数。每次修改后,编译并测试。

7.删除旧函数。

à如果旧函数是该类public接口的一部分,你可能无法安全地删除它。这种情况下,将它保留在原处,并将它标记为deprecated(建议不使用)。

8.编译,测试。


转载于:https://my.oschina.net/u/134516/blog/214825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值