说我有一些课Foo
class Foo {
protected String x = "x";
public String getX() {
return x;
}
}
我有一个使用Foo并违反LoD的程序
class Bar {
protected Foo foo;
public Bar() {
this.foo = new Foo();
}
public Foo getFoo() {
return foo;
}
}
public static void main(String [] args) {
Bar bar = new Bar();
String x = bar.getFoo().getX();
}
重构使用LoD如下所示:
class Bar {
protected Foo foo;
public Bar() {
this.foo = new Foo()
}
public String getFooX {
return foo.getX();
}
}
public static void main(String [] args) {
Bar bar = new Bar();
String x = bar.getFooX();
}
IntelliJ-IDEA有很多重构方法(例如,提取到方法,提取到变量,内联)。
IntelliJ-IDEA中是否有一个方法可以将bar.getFoo().getX()
之类的代码重构为bar.getFooX()
?
答案 0 :(得分:5)
假设您的示例是Java代码,您可以执行以下操作:
bar.getFoo().getX()
上的提取方法(创建getFooX()
)getFooX()
移至Bar
getFooX()
getFooX()
$a$.getFoo().getX()
$a$.getFooX()
; - )getFoo()
的所有调用(应仅在getFooX()
中)