Intellij Idea - Refatoração de Código

Neste capítulo, aprenderemos sobre Refatoração de Código e como ela funciona no IntelliJ. A refatoração de código é a reestruturação do código sem alterar sua funcionalidade e usabilidade. A refatoração de código pode ser feita para melhorar a legibilidade e o desempenho do código ou para remover funcionalidade não utilizada / duplicada. IntelliJ oferece excelente suporte para refatoração de código. Este capítulo discute várias ações de refatoração de código.

Renomear

As ações de renomeação podem ser usadas para renomear métodos, seus parâmetros, atributos de classe, variáveis ​​locais e assim por diante. Vamos criar a seguinte classe no IntelliJ.

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   
   @Override
   public String toString() {
      return "Employee{" +
      "name='" + name + '\'' +
      ", address='" + address + '\'' +
      ", age=" + age +
      '}';
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      System.out.println(e);
   }
}

Agora, vamos renomear Employee classe para Person. Esta ação fará modificações nos construtores e nomain() método -

  • Selecione a palavra do funcionário

  • Vamos para Refactor → Rename e renomeie-o como Pessoa.

Substituir Duplicados de Código

Esta é uma das ações de refatoração poderosas. O IntelliJ identifica códigos duplicados e os substitui pelo código apropriado. Vamos introduzir a duplicação de código e refatorá-la. Digite o seguinte código no Editor -

public class Employee {
   private String name;
   private String address;
   private int age;
   public Employee() {
      this("Jarvis", "Palo Alto", 35);
   }
   public Employee(String name, String address, int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void setData(String name, String address,  int age) {
      this.name = name;
      this.address = address;
      this.age = age;
   }
   public void showEmployeeDetail() {
      System.out.println("Name = " + name + ", Address = " + address + ", Age = " + age);
   }
   public static void main(String args[]) {
      Employee e = new Employee();
      e.showEmployeeDetail();
   }
}

Neste exemplo, Employee (String name, String address, int idade) construtor e public void setData (nome da string, endereço da string, intidade) são exatamente idênticos. Após a refatoração, o construtor Employee (String name, String address, int age) é modificado da seguinte forma -

public Employee(String name, String address, int age) {
   setData(name, address, age);
}

Para substituir as duplicatas -

  • Vá para Refatorar → Localizar e substituir duplicatas de código.

  • Selecione o escopo de refatoração e siga as etapas na tela para concluir a ação.

Copiar Refatoração

Nesta seção, vamos entender como copiar uma classe para outra. Vamos copiar a classe Employee para a classe Person. Podemos copiá-lo para o módulo existente ou para um novo. O IntelliJ fará as alterações necessárias dependendo dele. Siga estas etapas para realizar a refatoração de cópia -

  • Vamos para Refactor → Copy, ele abrirá a caixa de diálogo.

  • Insira um novo nome e pacote de destino.

  • Clique no botão OK e fará o necessário.

Mover Refatoração

A refatoração de movimento é semelhante à cópia, mas em vez de fazer outra cópia, ela move o código para um pacote diferente ou o torna uma classe interna de outra classe.

Siga estas etapas para executar a refatoração de movimento -

  • Vá para Refatorar → Mover.

  • Uma nova janela aparecerá.

  • Selecione uma das opções de acordo com sua escolha e clique em Refatorar.

Exclusão Segura

A ação de Exclusão Segura excluirá o objeto somente quando ele não for referenciado em qualquer lugar do projeto. O destino para esta opção pode ser classe, interface, método, campo ou parâmetro.

Vamos ver isso em ação. Digite o seguinte código no Editor -

public class HelloWorld {
   static void sayHello() {
      System.out.println("Hello, World !!!");
   }
   public static void main(String[] args) {
      sayHello();
   }
}

Siga estas etapas para realizar a ação de exclusão segura -

  • Selecione os sayHello() método.

  • Clique com o botão direito nele e selecione o Refactor → Safe Delete opção.

  • Conforme o método sayHello () está sendo usado, ele mostrará um erro como na imagem a seguir -

Alterar assinatura

A ação modifica a assinatura do método. Ele pode alterar o nome do método, seus parâmetros, tipos, valores de retorno e assim por diante. Vamos pegar um método do exemplo acima e alterar sua assinatura.

Siga estas etapas para realizar a ação Alterar assinatura -

  • Selecione o método.

  • Clique com o botão direito nele e selecione a ação Refatorar → Alterar assinatura

  • Uma nova janela aparecerá onde você pode realizar as ações acima.

  • Na parte inferior da janela, mostra a visualização da nova assinatura.

Migração de tipo

A Migração de tipo muda o tipo do símbolo. Este símbolo pode ser um parâmetro de método ou atributo de classe. Vamos considerar o seguinte método antes de realizar a ação necessária -

static void sayHello(String name) {
   System.out.println(name);
}

Siga estas etapas para realizar a migração de tipo -

  • Selecione o tipo de dados “String”.

  • Clique com o botão direito e selecione Refactor → Type migration.

  • Insira o tipo de dados necessário na caixa de texto fornecida.

  • Escolha o escopo e clique no botão Refatorar.