Code Refactoring

优质
小牛编辑
130浏览
2023-12-01

在本章中,我们将了解代码重构及其在IntelliJ中的工作原理。 代码重构是重构代码而不改变其功能和可用性。 可以进行代码重构以提高代码可读性,性能或删除未使用/重复的功能。 IntelliJ为代码重构提供了很好的支持。 本章讨论各种代码重构操作。

Rename

重命名动作可用于重命名方法,其参数,类属性,局部变量等。 让我们在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命名。

重命名动作

替换代码重复

这是强大的重构操作之一。 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);
}

替换重复 -

  • 转到重构→查找和替换代码重复项。

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

替换代码重复

复制重构

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

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

  • 输入新名称和目标包。

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

复制课程

移动重构

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

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

  • 转到,重构→移动。

  • 将出现一个新窗口。

  • 根据您的选择选择其中一个选项,然后单击“重构”。

移动重构

安全删除

仅当在项目中的任何位置未引用对象时,“安全删除”操作才会删除对象。 此选项的目标可以是类,接口,方法,字段或参数。

让我们看看这一点。 在编辑器中键入以下代码 -

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

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

  • 选择sayHello()方法。

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

  • 正如使用sayHello()方法一样,它将显示错误,如下面的屏幕截图所示 -

安全删除操作

更改签名

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

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

  • 选择方法。

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

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

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

更改签名

类型迁移

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

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

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

  • 选择“字符串”数据类型。

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

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

  • 选择范围并单击“重构”按钮。