【代码重构(Refectoring)系列教程】如何解决函数中过长的参数列表(Long Parameter List)

过长的参数列表

●症状和特点

  一个方法中的参数超过三个或者四个。
在这里插入图片描述

●问题产生的原因

  在几种类型的算法被合并到一个方法中的时候,长的参数列表有可能会出现。一个长的参数列表可能会用来控制哪一个算法如何来运行。
  在尝试将许多类彼此间独立的过程中,长参数列表可能会应运而生。比如,在一个方法中的某一段用来创建指定对象的代码被移动到了调用这个方法外部的代码,但是需要创建的对象就通过这个方法的参数传入了。因此,原来这个类就不知道各个要对象之间的关系,它们间的依赖关系也就减弱了。但是如果有好几个这样的对象要被创建,每一个对象都需要对应一个它自己的参数,这也就意味需要一个较长的参数列表了。
  这样的参数列表很难被理解,并且随着它们的增长,它们也变得彼此矛盾且难以使用。一个方法可以用它自己对象中数据来代替长参数列表的使用。如果当前这个对象并不包含所有必要的数据,可以通过将另外一个对象(它包含了必要的数据)当作方法的参数进行传入。

●解决方法

  检查传入这些参数的值。如果一些参数就是另一个对象的方法调用的结果,可以使用以函数调用来代替参数法。这个对象可以被放在他自己的类中,或者以方法的参数进行传入。
  可以将某个对象本身传入到方法中,而不是将这个对象产生的一系列的数据传入。此种情况可以使用保持完整对象法
  如果有几个毫不相关的数据,有时你可以通过引入参数对象法将他们合并成一个参数对象。
在这里插入图片描述

●优势

  获得更具有可读性,更简短的代码。
  重构后可能可以发现以前被忽略的重复的代码。

●何时应该忽略

  如果这样做使得类间的不必要的依赖,那么就不应该去掉这些参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值