Spis treści
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...:
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:
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:
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:
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:
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 Refactor → Move Class... Pojawi się wtedy następujące okno:
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:
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.