IntelliJ 重构以使用 LoD
IntelliJ Refactor to use LoD
假设我有一些 class 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()
的代码?
假设您的示例是 Java 代码,您可以执行以下操作:
bar.getFoo().getX()
上的提取方法(创建 getFooX()
)
- 如有必要,将创建的方法
getFooX()
移动到Bar
- 在
getFooX()
上调用 查找和替换重复代码
- 在
getFooX()
上调用转换为实例方法
- 可选结构将
$a$.getFoo().getX()
替换为 $a$.getFooX()
如果您忘记了步骤 3;-)
- 内联
getFoo()
的所有调用(应该只在 getFooX()
中)
假设我有一些 class 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()
的代码?
假设您的示例是 Java 代码,您可以执行以下操作:
bar.getFoo().getX()
上的提取方法(创建getFooX()
)- 如有必要,将创建的方法
getFooX()
移动到Bar
- 在
getFooX()
上调用 查找和替换重复代码
- 在
getFooX()
上调用转换为实例方法
- 可选结构将
$a$.getFoo().getX()
替换为$a$.getFooX()
如果您忘记了步骤 3;-) - 内联
getFoo()
的所有调用(应该只在getFooX()
中)