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);
   } 
}

现在,让我们将员工类重命名为.此操作将在构造函数和 main()方法中进行修改 :

  • 选择员工单词

  • 转到 Refactor → 重命名并用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)构造函数和 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 → 查找和替换代码重复项.

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

替换代码重复

复制重构

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

  • 转到 Refactor → 复制,它将打开对话框.

  • 输入新名称和目的地包.

  • 单击确定按钮,它将完成所需.

复制类

移动重构

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

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

  • 转到,Refactor → 移动.

  • 将出现一个新窗口.

  • 根据需要选择其中一个选项根据您的选择并点击Refactor.

移动重构

安全删除

安全删除操作只有在
项目中的任何地方未被引用时才会删除对象.此选项的目标可以是类,接口,方法,字段或参数.

让我们看看这个实际操作.在编辑器中输入以下代码 :

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

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

  • 选择 sayHello()方法.

  • 右键单击在它上面选择 Refactor → 安全删除

    选项.

  • 由于正在使用sayHello()方法,因此会显示错误,如以下
    屏幕截图所示;

安全删除操作

更改签名

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

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

  • 选择方法.

  • 右键单击它并选择Refactor → 更改签名操作

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

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

更改签名

类型迁移

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

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

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

  • 选择"String"数据类型.

  • 右键单击它并选择 Refactor → 类型迁移.

类型迁移

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

  • 选择范围并单击"重构"按钮.