当两个类完全没有关联时,如何将方法从类移动到另一个类

Shr*_*wat 10 java eclipse refactoring decomposition automated-refactoring

我试图通过将一个类分成几个其他类来重新考虑一些代码.为此,我想将旧类中已存在的一些方法移动到新类.但是这些方法在很多地方被引用,手动更新引用似乎很烦人.那么有没有办法移动方法以及在eclipse中更新它们的引用?

Ren*_*ink 9

我会这样做:

  1. 确保您的测试正常运行并且需要重新考虑要重新考虑的代码.如果你没有测试写测试.它们是你的安全绳.
  2. 使用重新分解模式提取超类来创建要将某些方法移动到的新类.
  3. 使用重新分解模式上拉方法将方法及其所需的变量移动到超类.现在,您将看到要移动的方法和实例变量是否与您不想移动的其他方法有依赖关系.如果是这样,您必须首先打破这种依赖关系.
  4. 找到应该使用新提取的类而不是"旧"类的所有客户端代码,并将其重写为新提取的类.
  5. 删除两个类之间的"扩展"关系.现在客户端代码应该工作或者你错过了什么.

另外,学习如何应用重新分解模式的好书是有效地使用遗留代码


PNS*_*PNS 0

如果您使用任何标准 IDE(例如,EclipseIntelliJ IDEA),它们都有一个简单的菜单选项来执行此操作(取决于代码的组织方式)。

如果您转到每个方法并右键单击其名称,菜单上会有一个“重构”选项,这会导致一个“移动”选项。选择它并按照说明进行操作。

上述对于静态方法来说尤其容易。对于非静态对象,您可能需要进行子类化,或传递对适当对象的引用。即便如此,“重构 -> 移动”选项是一个好的开始。