过长的参数列表
●症状和特点
一个方法中的参数超过三个或者四个。
●问题产生的原因
在几种类型的算法被合并到一个方法中的时候,长的参数列表有可能会出现。一个长的参数列表可能会用来控制哪一个算法如何来运行。
在尝试将许多类彼此间独立的过程中,长参数列表可能会应运而生。比如,在一个方法中的某一段用来创建指定对象的代码被移动到了调用这个方法外部的代码,但是需要创建的对象就通过这个方法的参数传入了。因此,原来这个类就不知道各个要对象之间的关系,它们间的依赖关系也就减弱了。但是如果有好几个这样的对象要被创建,每一个对象都需要对应一个它自己的参数,这也就意味需要一个较长的参数列表了。
这样的参数列表很难被理解,并且随着它们的增长,它们也变得彼此矛盾且难以使用。一个方法可以用它自己对象中数据来代替长参数列表的使用。如果当前这个对象并不包含所有必要的数据,可以通过将另外一个对象(它包含了必要的数据)当作方法的参数进行传入。
●解决方法
检查传入这些参数的值。如果一些参数就是另一个对象的方法调用的结果,可以使用以函数调用来代替参数法。这个对象可以被放在他自己的类中,或者以方法的参数进行传入。
可以将某个对象本身传入到方法中,而不是将这个对象产生的一系列的数据传入。此种情况可以使用保持完整对象法。
如果有几个毫不相关的数据,有时你可以通过引入参数对象法将他们合并成一个参数对象。
●优势
获得更具有可读性,更简短的代码。
重构后可能可以发现以前被忽略的重复的代码。
●何时应该忽略
如果这样做使得类间的不必要的依赖,那么就不应该去掉这些参数。