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()**方法中进行修改 -

  • 选择 Employee 字样

  • 转到**Refactor → Rename**并将其重命名为 Person。

Rename Actions

替换代码重复

这是强大的重构操作之一。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) 构造函数和**public 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 → Find and Replace Code Duplicates。

  • 选择重构范围并按照屏幕上的步骤完成操作。

Replace Code Duplicates

复制重构

在本节中,我们将了解如何将一个类复制到另一个类。让我们将 Employee 类复制到 Person 类。我们可以将其复制到现有模块或新模块中。IntelliJ 将根据需要进行相应的更改。请按照以下步骤执行复制重构 -

  • 转到**Refactor → Copy**,它将打开对话框。

  • 输入新名称和目标包。

  • 单击“确定”按钮,它将完成必要操作。

Copy Class

移动重构

移动重构类似于复制,但它不是创建另一个副本,而是将代码移动到不同的包或将其作为另一个类的内部类。

请按照以下步骤执行移动重构 -

  • 转到 Refactor → Move。

  • 将出现一个新窗口。

  • 根据您的选择选择其中一个选项,然后单击 Refactor。

Move Refactoring

安全删除

安全删除操作仅在项目中任何地方都没有引用对象时才会删除该对象。此选项的目标可以是类、接口、方法、字段或参数。

让我们看看它的实际操作。在编辑器中输入以下代码 -

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

请按照以下步骤执行安全删除操作 -

  • 选择**sayHello()**方法。

  • 右键单击它并选择**Refactor → Safe Delete**选项。

  • 由于 sayHello() 方法正在使用中,因此它将显示如下屏幕截图中的错误 -

Safe Delete Action

更改签名

此操作修改方法签名。它可以更改方法名称、方法参数、类型、返回值等。让我们从上面的示例中获取一个方法并更改其签名。

请按照以下步骤执行更改签名操作 -

  • 选择方法。

  • 右键单击它并选择 Refactor → Change signature 操作

  • 将出现一个新窗口,您可以在其中执行上述操作。

  • 在窗口底部,它显示了新签名的预览。

Change Signature

类型迁移

类型迁移更改符号的类型。此符号可以是方法参数或类属性。让我们在执行所需操作之前考虑以下方法 -

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

请按照以下步骤执行类型迁移 -

  • 选择“String”数据类型。

  • 右键单击它并选择**Refactor → Type migration**。

Type Migration
  • 在给定的文本框中输入所需的数据类型。

  • 选择范围并单击 Refactor 按钮。

广告

© . All rights reserved.