鉴于我的代码如下:
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知道搜索更难以提取此类代码的技巧?
答案 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);
}