Intellij Idea - Refaktoryzacja kodu
W tym rozdziale dowiemy się o refaktoryzacji kodu i jak to działa w IntelliJ. Refaktoryzacja kodu to restrukturyzacja kodu bez zmiany jego funkcjonalności i użyteczności. Refaktoryzację kodu można przeprowadzić w celu poprawy czytelności kodu, wydajności lub usunięcia nieużywanej / zduplikowanej funkcjonalności. IntelliJ zapewnia doskonałe wsparcie dla refaktoryzacji kodu. W tym rozdziale omówiono różne akcje refaktoryzacji kodu.
Przemianować
Akcje zmiany nazwy mogą służyć do zmiany nazw metod, ich parametrów, atrybutów klas, zmiennych lokalnych i tak dalej. Stwórzmy następującą klasę w 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);
}
}
Teraz zmieńmy nazwę Employee klasa do Person. Ta akcja spowoduje modyfikacje w konstruktorach imain() metoda -
Wybierz słowo pracownika
Iść do Refactor → Rename i zmień jego nazwę na Person.
Zastąp duplikaty kodu
Jest to jedna z potężnych akcji refaktoryzacji. IntelliJ identyfikuje duplikaty kodu i zastępuje go odpowiednim kodem. Przedstawmy powielanie kodu i zrefaktoryzujmy go. Wpisz następujący kod w edytorze -
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();
}
}
W tym przykładzie Employee (String name, String address, int age) konstruktor i public void setData (nazwa ciągu, adres ciągu, intage) są dokładnie identyczne. Po refaktoryzacji konstruktor Pracownik (nazwa ciągu, adres ciągu, wiek int) zostaje zmodyfikowany w następujący sposób -
public Employee(String name, String address, int age) {
setData(name, address, age);
}
Aby zamienić duplikaty -
Idź do Refaktoryzacja → Znajdź i zamień duplikaty kodu.
Wybierz zakres refaktoryzacji i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zakończyć działanie.
Refaktoryzacja kopii
W tej sekcji dowiemy się, jak skopiować jedną klasę do drugiej. Skopiujmy klasę Pracownik do klasy Osoba. Możemy go skopiować do istniejącego modułu lub do nowego. IntelliJ dokona wymaganych zmian w zależności od tego. Wykonaj następujące kroki, aby przeprowadzić refaktoryzację kopii -
Iść do Refactor → Copy, otworzy okno dialogowe.
Wprowadź nową nazwę i pakiet docelowy.
Kliknij przycisk OK, a zrobi to, co konieczne.
Przenieś refaktoryzację
Przeniesienie refaktoryzacji jest podobne do kopiowania, ale zamiast robić kolejną kopię, przenosi kod do innego pakietu lub tworzy go jako wewnętrzną klasę innej klasy.
Wykonaj następujące kroki, aby przeprowadzić refaktoryzację przenoszenia -
Idź do, Refaktoryzuj → Przenieś.
Pojawi się nowe okno.
Wybierz jedną z opcji według własnego uznania i kliknij Refaktoryzuj.
Bezpieczne usuwanie
Akcja Bezpieczne usuwanie spowoduje usunięcie obiektu tylko wtedy, gdy nie ma do niego odniesienia w żadnym miejscu projektu. Celem tej opcji może być klasa, interfejs, metoda, pole lub parametr.
Zobaczmy to w akcji. Wpisz następujący kod w edytorze -
public class HelloWorld {
static void sayHello() {
System.out.println("Hello, World !!!");
}
public static void main(String[] args) {
sayHello();
}
}
Wykonaj następujące kroki, aby wykonać akcję bezpiecznego usuwania -
Wybierz sayHello() metoda.
Kliknij go prawym przyciskiem myszy i wybierz plik Refactor → Safe Delete opcja.
Ponieważ metoda sayHello () jest używana, wyświetli się błąd, jak na poniższym zrzucie ekranu -
Zmień podpis
Akcja modyfikuje sygnaturę metody. Może zmienić nazwę metody, jej parametry, typy, wartości zwracane i tak dalej. Weźmy metodę z powyższego przykładu i zmieńmy jej podpis.
Wykonaj następujące kroki, aby wykonać akcję Zmień podpis -
Wybierz metodę.
Kliknij go prawym przyciskiem myszy i wybierz akcję Refaktoryzuj → Zmień podpis
Pojawi się nowe okno, w którym możesz wykonać powyższe czynności.
W dolnej części okna pokazuje podgląd nowego podpisu.
Migracja typu
Migracja typu zmienia typ symbolu. Ten symbol może być parametrem metody lub atrybutem klasy. Rozważmy następującą metodę przed wykonaniem wymaganej czynności -
static void sayHello(String name) {
System.out.println(name);
}
Wykonaj następujące kroki, aby przeprowadzić migrację typów -
Wybierz typ danych „Ciąg”.
Kliknij go prawym przyciskiem myszy i wybierz Refactor → Type migration.
Wprowadź wymagany typ danych w odpowiednim polu tekstowym.
Wybierz zakres i kliknij przycisk Refaktoryzuj.