Intellij Idea - Refactorisation du code

Dans ce chapitre, nous découvrirons le refactoring de code et son fonctionnement dans IntelliJ. La refactorisation du code consiste à restructurer le code sans modifier sa fonctionnalité et sa convivialité. La refactorisation du code peut être effectuée pour améliorer la lisibilité et les performances du code ou pour supprimer les fonctionnalités inutilisées / dupliquées. IntelliJ fournit un excellent support pour la refactorisation du code. Ce chapitre traite de diverses actions de refactoring de code.

Renommer

Les actions de changement de nom peuvent être utilisées pour renommer des méthodes, ses paramètres, des attributs de classe, des variables locales, etc. Créons la classe suivante dans 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);
   }
}

Maintenant, renommons Employee classe à Person. Cette action modifiera les constructeurs et lemain() méthode -

  • Sélectionnez le mot de l'employé

  • Aller à Refactor → Rename et renommez-le avec Person.

Remplacer les doublons de code

C'est l'une des actions de refactoring puissantes. IntelliJ identifie les doublons de code et le remplace par le code approprié. Introduisons la duplication de code et refactorisons-la. Tapez le code suivant dans l'éditeur -

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

Dans cet exemple, Employee (String name, String address, int âge) constructeur et public void setData (nom de chaîne, adresse de chaîne, intage) sont exactement identiques. Après la refactorisation, le constructeur Employee (String name, String address, int age) est modifié comme suit -

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

Pour remplacer les doublons -

  • Allez dans Refactor → Rechercher et remplacer les doublons de code.

  • Sélectionnez la portée de refactorisation et suivez les étapes à l'écran pour terminer l'action.

Refactoring de copie

Dans cette section, nous allons comprendre comment copier une classe dans une autre. Copions la classe Employee dans la classe Person. Nous pouvons le copier dans le module existant ou dans un nouveau. IntelliJ effectuera les modifications requises en fonction de cela. Suivez ces étapes pour effectuer le refactoring de copie -

  • Aller à Refactor → Copy, cela ouvrira la boîte de dialogue.

  • Entrez le nouveau nom et le package de destination.

  • Cliquez sur le bouton OK et il fera le nécessaire.

Refactoring de déplacement

Le refactoring de déplacement est similaire à la copie, mais au lieu de faire une autre copie, il déplace le code vers un autre package ou le transforme en classe interne d'une autre classe.

Suivez ces étapes pour effectuer la refactorisation de déplacement -

  • Allez dans, Refactoriser → Déplacer.

  • Une nouvelle fenêtre apparaîtra.

  • Sélectionnez l'une des options selon votre choix et cliquez sur Refactor.

Suppression sécurisée

L'action Suppression sécurisée supprimera l'objet uniquement lorsqu'il n'est référencé nulle part dans le projet. La cible de cette option peut être une classe, une interface, une méthode, un champ ou un paramètre.

Voyons cela en action. Tapez le code suivant dans l'éditeur -

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

Suivez ces étapes pour effectuer l'action de suppression en toute sécurité -

  • Sélectionnez le sayHello() méthode.

  • Faites un clic droit dessus et sélectionnez le Refactor → Safe Delete option.

  • Comme la méthode sayHello () est utilisée, elle affichera une erreur comme dans la capture d'écran suivante -

Modifier la signature

L'action modifie la signature de la méthode. Il peut changer le nom de la méthode, ses paramètres, ses types, ses valeurs de retour, etc. Prenons une méthode de l'exemple ci-dessus et modifions sa signature.

Suivez ces étapes pour exécuter l'action Modifier la signature -

  • Sélectionnez la méthode.

  • Cliquez dessus avec le bouton droit de la souris et sélectionnez l'action Refactoriser → Modifier la signature

  • Une nouvelle fenêtre apparaîtra dans laquelle vous pouvez effectuer les actions ci-dessus.

  • Au bas de la fenêtre, il montre l'aperçu de la nouvelle signature.

Migration de type

La migration de type modifie le type du symbole. Ce symbole peut être un paramètre de méthode ou un attribut de classe. Considérons la méthode suivante avant d'effectuer l'action requise -

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

Suivez ces étapes pour effectuer la migration de type -

  • Sélectionnez le type de données «Chaîne».

  • Faites un clic droit dessus et sélectionnez Refactor → Type migration.

  • Entrez le type de données requis dans la zone de texte donnée.

  • Choisissez la portée et cliquez sur le bouton Refactor.