美文网首页
重构坏味道:过长的参数列

重构坏味道:过长的参数列

作者: Ps天花乱坠 | 来源:发表于2021-11-22 00:45 被阅读0次

过长的参数列

症状

一个函数拥有大于3个甚至更多的参数,而且调用链上的每个函数可能都需要你传递不同的参数,或者某几个参数看起来就是成对出现,并且拥有不可分开的强耦合关系


过长的参数列

病因

刚开始学习编程的时候,我们总是把函数需要的东西全部以参数的形式传递进去,因为除此之外就只能选择全局数据,而全局数据是个邪恶的东西。
还有一种情况你可能在重构代码的时候,把好几个函数合并成了一个函数,这样就会导致,原来每个函数的参数都会作为你这个新函数的参数存在。

导致的健康问题

虽然参数的独立可以隔离对象之间的依赖,但如果太长的参数列不仅难以理解,太多的参数还会造成前后不一致,不易使用, 一旦你需要更多的数据,就不得不修改它,而且每一层调用都会相应的修改。

治疗

使用对象技术可以改变了这一情况:如果你的函数没有你所需的参数,总可以叫另一个对象给你,有了对象,你就不必把函数需要的所有东西都以参数传递给它了,只需要传给它足够的,让函数能从对象中获得自己需要的东西就就行了。


重构手法
  • 如果向已有的对象发出一条请求,就可以取代一个参数
    尝试运用 Replace Parameter with Method在这里"已有对象"可能是函数所属类内的一个字段 也可能是另一个参数。
    B站实战视频
    尝试运用 Preserve Whole Object 将来自同一个对象的一堆数据收集起来,并以该对象替换它们
    B站实战视频
  • 如果已有对象是单例的,或者无状态的,且某些数据缺乏合理的对象归属
    尝试运用 Introduce Parameter Object 为它们制造出一个参数对象
    B站实战视频

康复

有一个重要的例外:有时候你明显不希望造成"被调用对象"与"较大对象"间的某种依赖关系.这时候将参数从对象中拆解出来单独作为参数,也很合情合理。但是请注意其所引发的代码。
如果参数列太长或变化太频繁,你就需要重新考虑自己的依赖结构了。

重构后

相关文章

  • 重构坏味道:过长的参数列

    过长的参数列 症状 一个函数拥有大于3个甚至更多的参数,而且调用链上的每个函数可能都需要你传递不同的参数,或者某几...

  • 重构坏味道:过长的函数

    过长的函数 症状 一个方法包含了太多的代码行,做了很多不同的事情。Long Method 病因 在早期编程语言,调...

  • 重构坏味道:过长的消息链

    过度耦合的消息链 症状 如果你看到一个对象请求另一个对象,然后在向后者请求另一个对象,然后在请求另一个对象类似:g...

  • 《重构》读书笔记 第三至六章

    第三章 代码的坏味道 重复代码 过长函数 过大的类 过长参数列 发散式变化(某个类经常因为不同的原因在不同的方向上...

  • 坏味道与重构手法

    坏味道(英文)坏味道(中文)页码常用重构Alternative Classes with Different In...

  • 《徐昊-TDD项目实战70讲》学习笔记 -- Day 4

    02|TDD演示(2):识别坏味道与代码重构 识别坏味道 利用多态替换条件分支 TDD 的红 / 绿 / 重构循环...

  • 重构:改善既有代码的设计

    书中的简单实用的重构方法基本上都是针对代码的Bad Smell,书中常见的坏味道:重复代码,过长函数,太大的类...

  • 架构重构实践

    局部架构重构 1. 架构重构的驱动力 坏味道驱动 规划驱动 架构组织与架构过程中的重构 2. 坏味道如何判断 以下...

  • 重构-坏的味道

    Duplicated Code(重复代码) 场景与处理 同一个类的两个函数含有相同的表达式Extract Meth...

  • 这些代码有点臭,重构大法带你秀(SPI接口化)

    如果说 正常的重构 是为了消除 代码 的坏味道, 那么 高层次的重构 就是消除 架构 的坏味道 最近由于需要将公司...

网友评论

      本文标题:重构坏味道:过长的参数列

      本文链接:https://www.haomeiwen.com/subject/ucblwktx.html