重构手法50:Introduce Parameter Object (引入参数对象)

某些参数总是很自然地同时出现。以一个对象取代这些参数。

动机:你常常会看到特定的一组参数总是被一起传递。可能有好几个函数都使用这一组参数,这些函数可能隶属同一个类,也可能隶属不同的类。这样一组参数就是所谓的Data Clumps(数据泥团),我们可以运用一个对象包装所有这些数据,再以该对象取代它们。哪怕只是为了把这些数据组织在一起,这样做也是值得的。本项重构的价值在于缩短参数列,过长的参数列总是难以理解的。此外,新对象所定义的访问函数还可以使代码更具一致性,这又降低了理解和修改代码的难度。

       本项重构还可以带给你更多好处。当你把这些参数组织到一起后,往往很快可以发现一些可被移至新建类的行为。通常,原本使用那些参数的函数对这一组参数会有一些共通的处理,如果将这些共通行为移到新对象中,你可以减少很多重复代码。

做法:1、新建一个类,用以表现你想替换的一组参数。将这个类设为不可变的。

       2、编译。

       3、针对使用该组参数的所有函数,实施Add Parameter (添加参数),传入上述新建类的实例对象,并将此参数值设为null。

       4、对于Data Clumps(数据泥团)中的每一项,从函数签名中移除,并修改调用端和函数本体,令它们都改而通过新的参数对象取得该值。

       5、每去除一个参数,编译并测试。

       6、将原先的参数全部去除后,观察有无适当函数可以运用 Move Mothod(搬移函数)到参数对象中。

 

转载于:https://www.cnblogs.com/matchcolor/archive/2010/08/11/1785694.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值