跳转至

保留整个对象

  • 问题


    您从对象中获得几个值,然后将它们作为参数传递给方法。

  • 解决方案


    相反,尝试传递整个对象。

为什么重构?

问题是,每次调用你的方法之前,必须调用未来参数对象的方法。如果这些方法或方法获取的数据量发生变化,你将需要在程序中仔细找到十几个这样的位置,并在每个位置实现这些变化。

应用此重构技术后,获取所有必要数据的代码将存储在一个地方(方法本身)中。

您可以看到一个具有可理解名称的对象,而不是参数的杂物。

如果该方法需要来自对象的更多数据,则不需要重写使用该方法的所有地方 - 只需在方法本身内部重写即可。

有时这种转换会导致方法变得不那么灵活:以前该方法可以从许多不同的来源获取数据,但现在由于重构,我们将其使用限制为仅具有特定接口的对象。

如何重构?

  1. 在方法中为对象创建一个参数,从中可以获取必要的值。

  2. 现在开始逐个从方法中删除旧参数,并用对参数对象的相关方法的调用替换它们。每次替换参数后测试程序。

  3. 从方法调用之前的参数对象中删除 getter 代码。