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

シングル ホップ リファクタリングはないと思いますが、2 ホップで実行できます。

まず、メソッドの内容を強調表示してgetModelCount()を実行しrefactor->extract method、新しいメソッドを のように呼び出しcountModelsます。

次に、refactor->move新しいcountModels()メソッドで a を実行し、repositoryフィールドを宛先として選択します。

これにより、ではなく、ModelRepository呼び出されたメソッドが残ります。完全を期すために、これを実行することもできますが、とにかく好きです。countModelsgetModelCountrefactor->renamecountModels

于 2011-08-29T08:53:35.583 に答える