如何在具有不同常量的代码上使用Extract Method?

时间:2011-12-11 19:37:47

标签: java eclipse refactoring

鉴于我的代码如下:

void foo() {
  String str = "hello";

  a(str, 1);
  b(str, true);

  a(str, 2);
  b(str, false);
}

我想提取一个新方法c,如:

void foo() {
  String str = "hello";

  c(str, 1, true);
  c(str, 2, false);
}

但是,自动提取方法重构只会提取a / b对之一。我的猜测是它不喜欢不同的常数。我可以通过首先提取局部变量,然后提取方法,然后内联先前提取的变量来解决这个问题,但我仍然需要手动找到所有实例。有了这么多的工作,我不妨在我看每个部分时自己做出全面的改变。

我是否缺少让Eclipse知道搜索更难以提取此类代码的技巧?

1 个答案:

答案 0 :(得分:0)

是的,您需要将常量提取到变量中,您可以将其放在顶部,告诉您的工具将它们作为参数传递给提取的方法。

void foo() {
  String str = "hello";
  int constant = 1;
  boolean boolValue = true;
  a(str, constant);
  b(str, boolValue);

  constant = 2;
  boolValue = false;
  a(str, constant);
  b(str, boolValue);
}

执行提取方法应该提供以下内容:

public void c(String str, int constant, boolean boolVal){
    a(str, constant);
    b(str, boolVal);
}