Eclipse: najbardziej przydatne refaktoringi [zamknięte]

Co jakiś czas korzystam z funkcji refaktoryzacji Eclipse. Niektóre techniki są bardziej oczywiste niż inne, a niektóre nigdy nie próbowałem.

Jaki refaktoring jest dla Ciebie najbardziej przydatny i dlaczego?

Uwaga: uważam, że ta prezentacja jest bardzo przydatna, być może dlatego, że jest oparta na przykładzie, dlatego jest łatwa do zrozumienia:

"Refaktoryzacja dla każdego - jak i dlaczego używać funkcji automatycznego refaktoryzacji Eclipse "

Edit: ten artykuł jest również przydatny (dzięki jitter)

POZNAJ FUNKCJE refaktoryzacji w Eclipse JDT

Author: Adrian, 2009-11-26

13 answers

To ciekawe pytanie. Wiem, co dla mnie działa i interesujące jest, aby zobaczyć, co inni używają.

Postanowiłem przyjąć bardziej naukowe podejście do określenia najczęściej używanych poleceń refaktoryzacji. Eclipse ma wbudowaną funkcję Usage Data Collector (UDC) . Dane są publicznie dostępne . Wziąłem Dane i wyodrębniłem Poniższy wykres, który pokazuje najczęściej używane polecenia edycji (bez poleceń nawigacyjnych).

Alt text http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

Jestem jednak zwolennikiem "Save Actions" do formatowania i organizowania importu (przeczytaj mój artykuł o tym ), więc nie liczyłbym ich. Usunąłbym również komentarze. Zdjęcie wygląda tak: alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif

 52
Author: zvikico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-07 08:22:17

Zmień nazwę - ponieważ nadawanie rzeczom znaczących nazw jest najlepszym sposobem na napisanie samodokumentującego się kodu. Shift+Alt+R

Extract method - gdy metoda jest zbyt długa. Shift+Alt+M

Extract constant - ponieważ liczby magiczne są złe. Shift+Alt+T (menu refaktoryzacyjne, nie ma bezpośredniego skrótu).

Zmienna inline / introduce - w celu usunięcia bałaganu od metod. Shift+Alt+i (inline), Shift+Alt+L (Wprowadzenie)

 29
Author: abyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-27 08:33:46

Moje Ulubione (w kolejności użycia):

  1. Rename (Alt-Shift-R LUB Ctrl-1 dla szybszej zmiany nazwy w pliku)
    Dobra zmiana nazw zmiennych, metod itp. bez skutków ubocznych.
  2. Extract Zmienna (Ctrl-1, Alt-Shift-L)
    Dobre do dzielenia szybkiej linii 100 znaków na oddzielne kroki.
  3. Metoda Ekstrakcji (Alt-Shift-M)
    Utwórz metodę z jakiegoś kodu bez żadnych skutków ubocznych.
  4. Deklaracja Zmiennej Split (Ctrl-1)
    Dobrze gdy inicjalizujesz zmienną w deklaracja i teraz dowiadujemy się, że inicjalizacja musi być w bloku try - or if.
  5. Zmień Podpis Metody(Alt-Shift-C)
    Poręczny szwajcarski nóż wojskowy do manipulacji podpisem metody, zawierający domyślne wartości dla nowych parametrów.
  6. Pull Up / Push Down Metody i zmienne do ogólnego interfejsu lub klasy nadrzędnej lub push it down to a subclass
  7. Extract Interface / Superclass
    Wyodrębnij interfejs lub klasę nadrzędną z bieżącej klasy. Bardzo poręczne.
 20
Author: Hardcoded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-27 10:37:54

Moje ulubione:

  1. zmiana nazwy
  2. Pull up / Push Down
  3. Metoda Ekstrakcji
 7
Author: Andreas_D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-26 17:18:02

Podano najpopularniejsze refaktoryzacje i całkowicie się z nimi zgadzam.

Program do formatowania kodu (Źródło, Format lub Ctrl Shift F ) jest jedną z cech IDE, z których bardzo często korzystam. To prawda, że nie jest to refaktoryzacja, ale poprawia czytelność kodu przy zachowaniu stylu kodowania: po prostu przejdź do preferencji , Java, Styl kodu, Formatter i powiedz Eclipse, jak chcesz, aby Twój kod patrz!

Generowanie Getterów i Setterów jest również funkcją, która pozwala zaoszczędzić czas podczas pisania Java beans.

 4
Author: Paul Lammertsma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-01 15:42:31

Eclipse ma chyba najmniej refaktoringów dla wszystkich popularnych Idów. Możesz rozważyć Netbeans lub IntelliJ (Community edition jest darmowa). Odwrotnie Eclipse ma prawdopodobnie najlepszy debugger. ;)

Używam refaktoryzacji podczas pisania kodu (który znalazłem przyspiesza pisanie o około 15%), więc zdolność IntelliJ do refaktoryzacji kodu, który nie jest dla mnie zbyt przydatny. Inne IDE mogą to teraz poprzeć (czy ktoś wie?) Uważam, że IntelliJ ' s smart complete jest trochę mądrzejszy jak cóż.

Przetestowałem przepisywanie plików z wydruku (oryginalnie napisanych w eclipse) i stwierdziłem, że używałem 30% mniej klawiszy i 50% mniej ruchów myszy podczas wpisywania pliku z IntelliJ (w porównaniu z Eclipse)szacuję, że Netbeans jest gdzieś pośrodku.

 3
Author: Peter Lawrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-03 06:14:40

Moje Ulubione to:

1) Rename-działa na nazwach metod, nazwach zmiennych, nazwach klas, polach-naprawdę wszystko o nazwie.
2) Konwertuj klasę anonimową na zagnieżdżoną-pomaga w debugowaniu, pozwala na ponowne użycie logiki (takiej jak komparator), której myślałeś, że użyjesz tylko w jednym miejscu.
3) Konwersja typu Member na najwyższy poziom-często po przekształceniu anonimowej klasy w klasę zagnieżdżoną odkrywam, że klasa jest przydatna gdzie indziej. Refaktoryzacja jest więc doskonała.

 2
Author: Spina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-03 01:40:27

Najczęściej używam Rename, Extract Method I Change method Signature, w tej kolejności.

 1
Author: Yishai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-26 17:29:49

CTRL + 1 na czerwonym odcinku, czyli szybkie poprawki.

 1
Author: jeff porter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-27 09:25:29

I like the Extract Method (Alt+Shift+M ), a od 3.6M1, obsługuje teraz selekcje zawierające polecenia continue.

Aby zachować semantykę istniejącego kodu, zaznaczenie musi zawierać ostatnią instrukcję pętli. W metodzie extracted polecenia continue są zmieniane na return:

Refaktoryzacja metodą ekstrakcji z kontynuacją http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-continue.png

Dla selekcji, która wymagałaby wielu wartości zwracanych w wyodrębnionej metodzie, Eclipse wyświetla teraz sprzeczne zmienne w komunikacie błędu:

Refaktoryzacja metody Extract z niejednoznacznym błędem zwracanej wartości http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-multiple-return-values.png

 1
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-04 09:16:32

Używam:

1-Zmień nazwę-aby poprawić lepszą nazwę Metody

2-Move - aby zorganizować mój pakiet w lepszy sposób, jak kiedy rozpoczynam mój projekt, był tak mały, więc nie potrzeba pakietu io, ale teraz tak.

3-Generuj komentarze - kiedy tworzę .class avoid me to re-copy the GPL license, etc

4-poprawne Wcięcie - aby mój kod był czytelny.

 0
Author: Nettogrof,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-26 17:53:25

Warto też przeczytać te badania: Jak ewoluują API? Historia refaktoryzacji.D. Dig I R. Johnson.

Autorzy zauważyli, że 80% zmian to refaktoryzacje i sklasyfikowali je. Oto Streszczenie:

Frameworki i biblioteki zmieniają swoje APIs. Migracja aplikacji do nowe API jest uciążliwe i zakłóca proces rozwoju. Chociaż niektóre narzędzia i pomysły zostały zaproponowane do rozwiąż ewolucję API, najbardziej aktualizacje są wykonywane ręcznie. Na lepsze zrozumieć wymagania dla narzędzia do migracji, zbadaliśmy API zmiany czterech RAM i jednego biblioteka. Odkryliśmy, że zmiany, które łamią istniejące aplikacje nie są przypadkowe, ale mają tendencję do poszczególnych kategorii. Ponad 80% tych zmian to refaktoryzacje. Sugeruje to, że narzędzia migracji oparte na refaktoryzacji powinien być używany do aktualizacji aplikacji.

 0
Author: ewernli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-07 08:38:03

"warto też przeczytać te badania: jak ewoluują API? Historia refaktoryzacji. autor: D. Dig i R. Johnson.

Autorzy zauważyli, że 80% zmian to refaktoryzacje i sklasyfikowali je. Oto streszczenie ... "

80% zmian łamiących zaobserwowano jako refaktoryzacje. Same refaktoringi stanowiły tylko 20-30% zmian API..

 -3
Author: Raja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-02 07:43:00