圣诞大减价开始了!

移动方法

问题

一个方法在另一个类中比在它自己的类中使用得更多。

解决方案

在使用该方法次数最多的类中创建一个新方法,然后将旧方法中的代码移到那里。将原始方法的代码转换为对其他类中的新方法的引用,否则将其完全删除。

之前
移动方法-之前
移动方法-之后

为什么重构

  1. 您希望将方法移动到包含该方法使用的大部分数据的类中。这使得类内部更连贯

  2. 您希望移动一个方法,以减少或消除调用该方法的类对其所在类的依赖。如果调用类已经依赖于您计划将方法移动到的类,这可能很有用。这减少类之间的依赖关系

如何重构

  1. 验证旧方法在其类中使用的所有特性。也许把它们也搬走是个好主意。作为规则,如果一个特性只被考虑中的方法使用,那么您当然应该将该特性移到该方法中。如果其他方法也使用了该特性,那么您也应该移动这些方法。有时,移动大量的方法比在不同的类中建立它们之间的关系要容易得多。

    确保该方法没有在超类和子类中声明。如果是这种情况,您将不得不避免移动,或者在接收类中实现一种多态,以确保在捐赠类中划分方法的不同功能。

  2. 在接收类中声明新方法。您可能希望在新类中为该方法指定一个更合适的新名称。

  3. 决定如何引用收件人类。您可能已经有一个返回适当对象的字段或方法,但如果没有,则需要编写一个新的方法或字段来存储接收方类的对象。

    现在您有了一种方法来引用收件人对象及其类中的新方法。有了这些知识,您就可以将旧方法转化为新方法的参考。

  4. 看看:你能完全删除旧的方法吗?如果是,在所有使用旧方法的地方放置对新方法的引用。

Baidu
map