【代码重构】保持对象完整(Preserve Whole Object)-- 拆解类使得类的职责明确且单一

●适用场景

  你通过某一对象得到几个不同的值,然后将它们作为参数传入到一个方法之中。

●解决方案

  取而代之的,传入整个对象。

Java --重构前代码

int low = daysTempRange.getLow();
int high = daysTempRange.getHigh();
boolean withinPlan = plan.withinRange(low, high);

Java --重构前代后

boolean withinPlan = plan.withinRange(daysTempRange);


python --重构前代码

low = daysTempRange.getLow()
high = daysTempRange.getHigh()
withinPlan = plan.withinRange(low, high)

python --重构前代后

withinPlan = plan.withinRange(daysTempRange)

●为何需要重构

  问题在于每一次在你的方法调用之前,这个方法以后需要用到的参数对象都需要被调用到。如果这些方法或者这个方法而得到的数据改变了,那你就需要小心地找到程序中这些地方并且将这些地方执行更改。
  在你执行完这个重构策略后,获得这些必要数据地代码就会被放在一个地方–这个方法本身中。

●优势

  你看到的将是一个有着易于理解的名字的对象,而不是一堆参数的大杂烩。
  如果你的方法需要来自这个对象的更多的数据,你就不需要写所有使用到这些方法的地方–你只用修改方法本身。

●缺点

  有的时候这样的转变会使得方法缺少灵活性:之前方法可以从不同的地方获得参数数据,在这样重构后,我们就将它的使用限制于有着特定接口的对象上了。

如何重构

  1. 在方法中创建一个获得必要数据的参数对象。
  2. 现在开始将方法中旧的参数一个一个移除,将它们替换成相关方法的参数对象。每次替换完一个参数后对程序进行测试。
  3.删除方法调用前的参数对象的getter相关代码。

猜你喜欢

转载自blog.csdn.net/weixin_41937380/article/details/127856767