Refactorización personalizada simple en IntelliJ
Esta pregunta es un seguimientopara esto.
Digamos que tengo alguna clase de Foo.
class Foo {
protected String x = "x";
public String getX() {
return x;
}
}
Tengo un programa que usa Foo y viola LoD (Ley de 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();
}
Puedo refactorizar este código para usar LoD en dos pasos.
⌥⌘mbar.getFoo().getX()
->getFooX(bar)
(extraer al método, también buscar y reemplazar ocurrencias)F6 getFooX(bar)
->bar.getFooX()
(mover al método de instancia, también buscar y reemplazar ocurrencias)El programa que usaBar
ya no viola LoD.
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();
}
Me pregunto si hay una manera de hacer un método de refactorización personalizado en IntelliJ que consolide estos dos pasos en uno solo.
EDITAR Recibí una respuesta de JetBrains con un enlace a una solicitud de función preexistente. ¡Por favor vote si le resulta útil!
Hola Michael,
Parece que tenemos una solicitud similar en YouTrack:https://youtrack.jetbrains.com/issue/IDEA-122400. Siéntase libre de votar y dejar comentarios.
Saludos cordiales, Yaroslav Bedrov JetBrains
EDITAR Hay al menos una forma de inspeccionar los problemas de la Ley de Demeter.captura de pantalla http://i59.tinypic.com/2s80ft0.png
Aquí hay una esencia que contiene un perfil de inspección que solo buscará violaciones de LoD. Usted puedeimportarlo a IntelliJ.