保留整个对象
-
问题
您从对象中获得几个值,然后将它们作为参数传递给方法。
-
解决方案
相反,尝试传递整个对象。
为什么重构?
问题是,每次调用你的方法之前,必须调用未来参数对象的方法。如果这些方法或方法获取的数据量发生变化,你将需要在程序中仔细找到十几个这样的位置,并在每个位置实现这些变化。
应用此重构技术后,获取所有必要数据的代码将存储在一个地方(方法本身)中。
您可以看到一个具有可理解名称的对象,而不是参数的杂物。
如果该方法需要来自对象的更多数据,则不需要重写使用该方法的所有地方 - 只需在方法本身内部重写即可。
有时这种转换会导致方法变得不那么灵活:以前该方法可以从许多不同的来源获取数据,但现在由于重构,我们将其使用限制为仅具有特定接口的对象。
如何重构?
-
在方法中为对象创建一个参数,从中可以获取必要的值。
-
现在开始逐个从方法中删除旧参数,并用对参数对象的相关方法的调用替换它们。每次替换参数后测试程序。
-
从方法调用之前的参数对象中删除 getter 代码。