IntelliJ IDEA w akcji – Refactoring kodu

Refactoring kodu to proces, w którym zmieniasz strukturę swojego kodu, nie zmieniając jego zachowania. IDEA oferuje wiele w tym kontekście – ta funkcjonalność ma własne menu główne na górze okna, zatytułowane Refactor.

Zmiana nazwy

Przykładem refactoringu jest zmiana nazwy pola, metody, bądź klasy. Załóżmy, że mamy następujący projekt:

public class RefactoringPrzyklad {
  private static int pewnePole = 10;

  public static void main(String[] args) {
    // wyswietla pewnePole
    System.out.println(pewnePole);
  }
}

Jeżeli chcielibyśmy zmienić nazwę pola pewnePole, to możemy albo wykonać ręcznie wszystkie zmiany, potencjalnie zapominając o pewnych miejscach w naszym kodzie (w szczególności, gdy pracujemy na dużym projekcie), albo skorzystać z zmiany nazwy oferowanej przez IDEA.

Aby to zrobić, przejdź w edytorze kodu do miejsca, gdzie znajduje się nazwa, którą chcesz zmienić, a następnie skorzystaj ze skrótu Shift + F6 lub kliknij prawym przyciskiem myszki i z menu Refactor wybierz Rename...:

Funkcjonalność Rename w menu kontekstowym edytora kodu
Funkcjonalność Rename w menu kontekstowym edytora kodu

Powyżej kliknąłem prawym przyciskiem myszki na nazwę pola:

private static int pewnePole = 10;

Polecam jednak skrót Shift + F6 – jego użycie jest zdecydowanie szybsze. Po wybraniu opcji zmiany nazwy, IDEA zaznaczy zmienianą nazwę w następujący sposób:

Zmiana nazwy pola - podawanie nowej nazwy
Zmiana nazwy pola - podawanie nowej nazwy

Na około nazwy pola pojawiła się czerwona ramka. Aby dokonać zmiany nazwy, należy teraz w obszarze tej ramki wpisać nową nazwę i zatwierdzić Enterem. IDEA wyświetla także podpowiedzi nazw, na jakie być może będziemy chcieli zmienić nazwę – możemy strzałkami wybrać jedną z nich. Jeżeli chcesz przerwać zmianę nazwy, musisz nacisnąć (kilka razy) klawisz Escape.

Zanim zmienimy nazwę, zauważ, że pole pewnePole jest używane w metodzie main – jego treść wypisywana jest na ekran – dodatkowo, jego nazwa jest w komentarzu:

public static void main(String[] args) {
  // wyswietla pewnePole
  System.out.println(pewnePole);
}

IDEA domyślnie nie zmienia nazw w komentarzach, ale w innych miejscach kodu tak. Wpisałem nową nazwę dla pola:

Zmiana nazwy pola - zatwierdzanie zmiany
Zmiana nazwy pola - zatwierdzanie zmiany

Jeszcze zanim zmiana została zatwierdzona przeze mnie Enterem, IDEA zmieniła nazwę pola pewnePole na mojePole w metodzie main. Zauważ, że nazwa w komentarzu nie została zmieniona. Rozmyśliłem się i nie chcę zmieniać nazwy pola – naciskam więc klawisz Escape – nazwa wraca do poprzedniej, czyli pewnePole.

Spójrzmy na jeszcze jedną funkcjonalność – zmienimy nazwę pola pewnePole w inny sposób. Tym razem, po pierwszym użyciu skrótu Shift + F6, ponownie użyję skrótu Shift + F6 – spowoduje to pojawienie się następującego okna:

Zmiana nazwy pola - także w komentarzach i łańcuchach tekstowych
Zmiana nazwy pola - także w komentarzach i łańcuchach tekstowych

W tym oknie możesz wygodnie wpisać nową nazwę dla pola. Ponadto, możesz zaznaczyć Search in comments and strings, aby IDEA szukała nazwy pola i zmieniła je także w komentarzach. Możesz też kliknąć przycisk Preview, a IDEA wyświetli Ci listę zmian, które wykona – będzie tam też przycisk Do Refactor, aby faktycznie te zmiany wykonać.

Zmieniłem w powyższym oknie nazwę na pewnaLiczba, zaznaczyłem Search in comments and strings, i kliknąłem przycisk Refactor – IDEA pokazuje podsumowanie zmian, które wykona, na dole okna:

Przycisk służący do zatwierdzania zmian do wykonania w ramach zmiany nazwy pola
Przycisk służący do zatwierdzania zmian do wykonania w ramach zmiany nazwy pola

Kliknąłem Do Refactor – efekt w kodzie źródłowym jest następujący:

public class RefactoringPrzyklad {
  private static int pewnaLiczba = 10;

  public static void main(String[] args) {
    // wyswietla pewnaLiczba
    System.out.println(pewnaLiczba);
  }
}

IDEA zmieniła nazwę pola pewnePole na pewnaLiczba we wszystkich trzech miejscach – włączając w to komentarz.

Możesz zmieniać nie tylko nazwy pól, ale także metod i klas.

Zmiana pakietu klasy

Aby przenieść klasę do innego pakietu za pomocą refactoringu, kliknij jej nazwę w miejscu, gdzie jest zdefiniowana, lub kliknij na nią lewym przyciskiem myszki na liście w strukturze projektu i użyj skrótu F6. Możesz też kliknąć na nią prawym przyciskiem myszy i wybrać z menu RefactorMove Class... Pojawi się wtedy następujące okno:

Zmiana pakietu, w którym znajduje się klasa
Zmiana pakietu, w którym znajduje się klasa

Wpisałem nazwę pakietu, do którego chcę przenieść klasę – IDEA zaznaczyła ją na czerwono, bo podany przeze mnie pakiet nie istnieje jeszcze w projekcie – kliknąłem przycisk Refactor, a IDEA zapytała mnie, czy chcę utworzyć taki pakiet – kliknąłem Yes – klasa została przeniesiona:

Wynik zmiany pakietu, w którym znajduje się klasa
Wynik zmiany pakietu, w którym znajduje się klasa

Klasy możesz także przenosić między pakietami klikając je w strukturze projektu lewym przyciskiem myszy i przeciągając do innego katalogu.

Podsumowanie

Przedstawiłem tylko dwie z wielu funkcjonalności refactoringu – sprawdź w menu Refactor, co jeszcze do zaoferowania ma w tym temacie IDEA.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.