gpt4 book ai didi

java - IntelliJ 重构以使用 LoD

转载 作者:行者123 更新时间:2023-11-30 06:13:55 26 4
gpt4 key购买 nike

假设我有一些 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 代码,您可以执行以下操作:

  1. bar.getFoo().getX() 上的提取方法(创建 getFooX())
  2. 如有必要,将创建的方法 getFooX() 移动到 Bar
  3. getFooX()
  4. 上调用 查找和替换重复代码
  5. getFooX()
  6. 上调用 转换为实例方法
  7. 如果您忘记了第 3 步,可选地用 $a$.getFooX() 结构替换 $a$.getFoo().getX();-)
  8. 内联 getFoo() 的所有调用(应该只在 getFooX() 中)

关于java - IntelliJ 重构以使用 LoD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com