Учебники

Intellij Idea — Рефакторинг кода

В этой главе мы узнаем о рефакторинге кода и о том, как он работает в IntelliJ. Рефакторинг кода — это реструктуризация кода без изменения его функциональности и удобства использования. Рефакторинг кода может быть сделан для улучшения читабельности кода, производительности или для удаления неиспользуемых / дублирующих функций. IntelliJ предоставляет отличную поддержку для рефакторинга кода. В этой главе обсуждаются различные действия по рефакторингу кода.

переименовывать

Действия переименования могут использоваться для переименования методов, их параметров, атрибутов класса, локальных переменных и так далее. Давайте создадим следующий класс в 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);
   }
}

Теперь давайте переименуем класс Employee в Person . Это действие внесет изменения в конструкторы, а метод main ()

  • Выберите слово сотрудника

  • Перейдите в Refactor → Rename и переименуйте его с помощью Person.

Выберите слово сотрудника

Перейдите в Refactor → Rename и переименуйте его с помощью Person.

Переименовать действия

Заменить дубликаты кода

Это одно из мощных действий по рефакторингу. 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 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();
   }
} 

В этом примере конструктор Employee (String name, String address, int age) и открытый void setData (String name, String address, int age) полностью идентичны. После рефакторинга конструктор Employee (String name, String address, int age) изменяется следующим образом:

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

Чтобы заменить дубликаты —

  • Перейдите в Refactor → Найти и заменить дубликаты кода.

  • Выберите область рефакторинга и следуйте инструкциям на экране для завершения действия.

Перейдите в Refactor → Найти и заменить дубликаты кода.

Выберите область рефакторинга и следуйте инструкциям на экране для завершения действия.

Заменить дубликаты кода

Копировать рефакторинг

В этом разделе мы поймем, как копировать один класс в другой. Давайте скопируем класс Employee в класс Person. Мы можем скопировать его в существующий или новый модуль. IntelliJ сделает необходимые изменения в зависимости от этого. Выполните следующие действия, чтобы выполнить рефакторинг копии.

  • Перейдите в Refactor → Copy , откроется диалоговое окно.

  • Введите новое имя и целевой пакет.

  • Нажмите на кнопку ОК, и он сделает все необходимое.

Перейдите в Refactor → Copy , откроется диалоговое окно.

Введите новое имя и целевой пакет.

Нажмите на кнопку ОК, и он сделает все необходимое.

Копировать класс

Переместить Рефакторинг

Рефакторинг Move аналогичен копии, но вместо создания другой копии он перемещает код в другой пакет или делает его внутренним классом другого класса.

Выполните следующие шаги, чтобы выполнить рефакторинг ходов —

  • Перейти к, Refactor → Move.

  • Появится новое окно.

  • Выберите один из вариантов в соответствии с вашим выбором и нажмите Refactor.

Перейти к, Refactor → Move.

Появится новое окно.

Выберите один из вариантов в соответствии с вашим выбором и нажмите Refactor.

Переместить Рефакторинг

Безопасное удаление

Действие Безопасное удаление удалит объект только тогда, когда на него нет ссылок нигде в проекте. Целью этой опции может быть класс, интерфейс, метод, поле или параметр.

Давайте посмотрим на это в действии. Введите следующий код в редакторе —

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

Выполните следующие действия для выполнения безопасного удаления —

  • Выберите метод sayHello () .

  • Щелкните правой кнопкой мыши по нему и выберите опцию Refactor → Safe Delete .

  • Поскольку метод sayHello () используется, он покажет ошибку, как на следующем скриншоте —

Выберите метод sayHello () .

Щелкните правой кнопкой мыши по нему и выберите опцию Refactor → Safe Delete .

Поскольку метод sayHello () используется, он покажет ошибку, как на следующем скриншоте —

Безопасное удаление

Изменить подпись

Действие изменяет подпись метода. Он может изменять имя метода, его параметры, типы, возвращаемые значения и так далее. Давайте возьмем метод из приведенного выше примера и изменим его сигнатуру.

Выполните следующие действия, чтобы выполнить действие Изменить подпись —

  • Выберите метод.

  • Щелкните правой кнопкой мыши по нему и выберите Refactor → Изменить подпись

  • Появится новое окно, в котором вы можете выполнить вышеуказанные действия.

  • В нижней части окна отображается предварительный просмотр новой подписи.

Выберите метод.

Щелкните правой кнопкой мыши по нему и выберите Refactor → Изменить подпись

Появится новое окно, в котором вы можете выполнить вышеуказанные действия.

В нижней части окна отображается предварительный просмотр новой подписи.

Изменить подпись

Тип Миграция

Тип Миграция меняет тип символа. Этот символ может быть параметром метода или атрибутом класса. Давайте рассмотрим следующий метод перед выполнением требуемого действия —

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

Выполните следующие шаги для выполнения миграции типов —

Выберите тип данных «String».

Щелкните правой кнопкой мыши по нему и выберите « Refactor» → «Тип миграции» .

Введите требуемый тип данных в данное текстовое поле.

Выберите область и нажмите на кнопку Refactor.