IntelliJ 中的简单自定义重构
2022-09-03 08:07:50
这个问题是对此的后续。
假设我有一些班级Foo。
class Foo {
protected String x = "x";
public String getX() {
return x;
}
}
我有一个使用Foo的程序,违反了LoD(Demeter定律)。
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。
-
⌥⌘m
bar.getFoo().getX()
->getFooX(bar)
(提取到方法,也查找和替换实例) -
F6
getFooX(bar)
->bar.getFooX()
(移动到实例方法,同时查找和替换实例)
使用的程序不再违反 LoD。Bar
class Bar {
protected Foo foo;
public Bar() {
this.foo = new Foo();
}
public Foo getFoo() {
return foo;
}
public String getFooX() {
return foo.getX();
}
}
public static void main(String [] args) {
Bar bar = new Bar();
String x = bar.getFooX();
}
我想知道是否有一种方法可以在IntelliJ中制作一个自定义重构方法,将这两个步骤合并为一个。
编辑我收到了JetBrains的回复,其中包含指向预先存在的功能请求的链接。如果您发现这很有用,请对其进行投票!
你好迈克尔,
似乎我们在YouTrack中也有类似的请求:https://youtrack.jetbrains.com/issue/IDEA-122400。随时投票支持它并发表评论。
最好的问候, 雅罗斯拉夫·贝德罗夫喷气脑
下面是一个包含检查配置文件的要点,该配置文件将仅查找 LoD 违规。你可以把它导入到IntelliJ中。