IntelliJ重构使用LoD
说我有一些课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()
上的Extract方法(创建getFooX()
) - 如有必要,将创建的方法
getFooX()
移动到Bar
- 在
getFooX()
上调用查找和替换代码重复getFooX()
- 在
getFooX()
上调用转换为实例方法 - (可选
$a$.getFooX()
如果您忘记了第3步,则使用$a$.getFooX()
替换$a$.getFoo().getX()
😉 - 内联
getFoo()
所有调用(应仅在getFooX()
)
- 如何使用IntelliJ IDEA执行mvn命令?
- 使用Intellij 2016创建Jar – 没有主要清单属性
- Intellij IDEA:如何更改组织导入function
- 使用Intellij idea IDE读取文件
- Intellij突然抛出ClassNotFoundException
- 如何在IntelliJ IDEA中自动完成lambdas?
- 在intellij中使用JDBC / Mysql Connector
- 除了使用集成测试运行器在IntelliJ IDEA项目中以“IntegrationTest”结尾的所有JUnitunit testing之外,我该如何运行?
- 是否可以在Intellij Idea中更改junit4 test的默认类名模板?