本文介绍了IntelliJ重构使用LoD的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
说我有一些课Foo
class Foo {
protected String x = "x";
public String getX() {
return x;
}
}
我有一个使用Foo并违反LoD的程序
I have a program that uses Foo and violates 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如下所示:
Refactoring to use LoD looks like this:
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 has a lot of refactoring methods (e.g. extract to method, extract to variable, inline).
IntelliJ-IDEA中是否有一个重构代码的方法,如 bar.getFoo()。getX()
看起来像 bar.getFooX()
?
Is there a method in IntelliJ-IDEA that will refactor code like bar.getFoo().getX()
to look like bar.getFooX()
?
推荐答案
假设你的示例是Java代码,您可以执行以下操作:
Assuming that your example is Java code, you could do the following:
- 在
上提取方法bar.getFoo()。getX( )
(创建getFooX()
) - 移动创建的方法
getFooX( )
到Bar
如有必要 - 调用查找和替换代码重复项
getFooX()
- 在
getFooX()转换为实例方法 / code>
- 可选择结构替换
$ a $ .getFoo()。getX()
$ a $ .getFooX()
如果您忘记了第3步; - ) - 内联所有
的调用getFoo()
(应仅在getFooX()
)
- Extract method on
bar.getFoo().getX()
(creatinggetFooX()
) - Move the created method
getFooX()
toBar
if necessary - Invoke Find and Replace Code Duplicates on
getFooX()
- Invoke Convert To Instance Method on
getFooX()
- Optionally Structural Replace
$a$.getFoo().getX()
with$a$.getFooX()
if you forgot step 3;-) - Inline all invocations of
getFoo()
(should be only ingetFooX()
)
这篇关于IntelliJ重构使用LoD的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!