Refatoração personalizada simples no IntelliJ
Esta pergunta é uma continuaçãopor esta.
Digamos que eu tenha aula Foo.
class Foo {
protected String x = "x";
public String getX() {
return x;
}
}
Eu tenho um programa que usa Foo e viola LoD (Lei de Deméter)
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();
}
Eu posso refatorar esse código para usar LoD em duas etapas.
⌥⌘mbar.getFoo().getX()
->getFooX(bar)
(extrair para o método, também localize e substitua ocorrências)F6 getFooX(bar)
->bar.getFooX()
(vá para o método de instância, também encontre e substitua ocorrências)O programa que usaBar
não viola mais o 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();
}
Gostaria de saber se existe uma maneira de criar um método de refatoração personalizado no IntelliJ que consolide essas duas etapas em uma.
EDITAR Recebi uma resposta do JetBrains com um link para uma solicitação de recurso preexistente. Por favor vote nele se achar útil!
Olá Michael,
Parece que temos uma solicitação semelhante no YouTrack:https://youtrack.jetbrains.com/issue/IDEA-122400. Sinta-se livre para votar e deixar comentários.
Atenciosamente, Yaroslav Bedrov JetBrains
EDITAR Existe pelo menos uma maneira de inspecionar os problemas da Lei de Deméter.captura de tela http://i59.tinypic.com/2s80ft0.png
Aqui está uma essência que contém um perfil de inspeção que procurará apenas violações de LoD. Você podeimportá-lo para IntelliJ.