Intellij Idea - Refactoring del codice
In questo capitolo apprenderemo il refactoring del codice e come funziona in IntelliJ. Il refactoring del codice è la ristrutturazione del codice senza modificarne la funzionalità e l'usabilità. Il refactoring del codice può essere eseguito per migliorare la leggibilità e le prestazioni del codice o per rimuovere funzionalità inutilizzate / duplicate. IntelliJ fornisce un ottimo supporto per il refactoring del codice. Questo capitolo discute varie azioni di refactoring del codice.
Rinominare
Le azioni di ridenominazione possono essere utilizzate per rinominare metodi, i suoi parametri, attributi di classe, variabili locali e così via. Creiamo la seguente classe in 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);
}
}
Ora rinominiamo Employee classe a Person. Questa azione apporterà modifiche nei costruttori e inmain() metodo -
Seleziona parola dipendente
Vai a Refactor → Rename e rinominalo con Persona.

Sostituisci duplicati di codice
Questa è una delle potenti azioni di refactoring. IntelliJ identifica i duplicati del codice e lo sostituisce con il codice appropriato. Introduciamo la duplicazione del codice e lo rifattorizziamo. Digita il seguente codice nell'Editor:
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();
}
}
In questo esempio, Employee (String name, String address, int età) costruttore e public void setData (nome stringa, indirizzo stringa, intetà) sono esattamente identici. Dopo il refactoring, il costruttore Employee (String name, String address, int age) viene modificato come segue:
public Employee(String name, String address, int age) {
setData(name, address, age);
}
Per sostituire i duplicati -
Vai a Refactoring → Trova e sostituisci duplicati di codice.
Seleziona l'ambito del refactoring e segui i passaggi sullo schermo per completare l'azione.

Copia refactoring
In questa sezione capiremo come copiare una classe in un'altra. Copiamo la classe Employee nella classe Person. Possiamo copiarlo nel modulo esistente o in uno nuovo. IntelliJ eseguirà le modifiche richieste a seconda di esso. Segui questi passaggi per eseguire il refactoring della copia:
Vai a Refactor → Copy, aprirà la finestra di dialogo.
Immettere il nuovo nome e il pacchetto di destinazione.
Fare clic sul pulsante OK e farà il necessario.

Spostare il refactoring
Il refactoring di spostamento è simile alla copia ma invece di fare un'altra copia sposta il codice in un pacchetto diverso o lo rende come classe interna di un'altra classe.
Segui questi passaggi per eseguire il refactoring dello spostamento:
Vai a, Refactoring → Sposta.
Apparirà una nuova finestra.
Seleziona una delle opzioni in base alla tua scelta e fai clic su Refactor.

Eliminazione sicura
L'azione di eliminazione sicura eliminerà l'oggetto solo quando non è referenziato da nessuna parte nel progetto. L'obiettivo per questa opzione può essere classe, interfaccia, metodo, campo o parametro.
Vediamolo in azione. Digita il codice seguente nell'editor:
public class HelloWorld {
static void sayHello() {
System.out.println("Hello, World !!!");
}
public static void main(String[] args) {
sayHello();
}
}
Segui questi passaggi per eseguire l'azione di eliminazione sicura:
Seleziona il sayHello() metodo.
Fai clic destro su di esso e seleziona il file Refactor → Safe Delete opzione.
Poiché viene utilizzato il metodo sayHello (), verrà visualizzato un errore come nella schermata seguente:

Cambia firma
L'azione modifica la firma del metodo. Può modificare il nome del metodo, i suoi parametri, i tipi, i valori di ritorno e così via. Prendiamo un metodo dall'esempio sopra e cambiamo la sua firma.
Segui questi passaggi per eseguire l'azione Modifica firma:
Seleziona il metodo.
Fare clic con il pulsante destro del mouse e selezionare l'azione Refactoring → Cambia firma
Apparirà una nuova finestra in cui potrai eseguire le azioni di cui sopra.
Nella parte inferiore della finestra, mostra l'anteprima della nuova firma.

Digitare Migration
La migrazione del tipo cambia il tipo del simbolo. Questo simbolo può essere un parametro del metodo o un attributo di classe. Consideriamo il seguente metodo prima di eseguire l'azione richiesta:
static void sayHello(String name) {
System.out.println(name);
}
Segui questi passaggi per eseguire la migrazione del tipo:
Seleziona il tipo di dati "String".
Fai clic destro su di esso e seleziona Refactor → Type migration.

Immettere il tipo di dati richiesto nella casella di testo fornita.
Scegli l'ambito e fai clic sul pulsante Refactoring.