3

我有以下情况:

public class Controller {

  private ModelRepository repository;

  public int getModelCount() {
    int count = 0;
    List<Model> models = repository.getModels();

    for (Model model : models) {
      if (model.somePredicate()) {
        count++;
      }
    }

    return count;
  }
}

现在,我想通过使用一些自动 Eclipse 重构将getModelCount方法移动到内部ModelRepository,以便最终在控制器中使用它:

public class Controller {

  private ModelRepository repository;

  public int getModelCount() {
    repository.getModelCount();
  }
}

这在 Eclipse Indigo 中可行吗?如果是,如何?谢谢!

4

1 回答 1

5

我认为没有单跳重构,但您可以分两次进行。

首先,突出显示getModelCount()方法的内容并执行一个refactor->extract method,调用新方法,例如countModels.

其次,refactor->move在新countModels()方法上做一个,选择repository字段作为目标。

这将为您留下一个被ModelRepository调用的方法,countModels而不是getModelCount. 为了完整起见,您可以对此进行refactor->rename操作,但countModels无论如何我更喜欢。

于 2011-08-29T08:53:35.583 回答