您的位置:首页 > 移动开发 > Objective-C

Introduce Parameter Object(引入参数对象)

2017-05-23 09:13 609 查看

1.形式

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



2.动机

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

3.做法

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

编译。

针对使用该组参数的所有函数,实施Add Parameter,传入上述新建类的实例对象,并设置此参数为null。

A)如果你所修改的函数被其他很多函数调用,那么可以保留修改前的旧函数,并令它调用修改后的新函数。你可以先对旧函数进行重构,然后逐一修改调用端使其调用新函数,最后再将旧函数删除。

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

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

将原先的参数全部去除之后,观察有无适当函数可以运动Move Method搬移到参数对象之中。

A)被搬移的可能是整个函数,也可能是函数中的一个段落。如果是后者,首先使用Extract Method将该段落提炼为一个独立函数,再搬移这一新建函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  重构