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)
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
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)
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):
- Rename (
Alt-Shift-R
LUBCtrl-1
dla szybszej zmiany nazwy w pliku)
Dobra zmiana nazw zmiennych, metod itp. bez skutków ubocznych. - Extract Zmienna (
Ctrl-1
,Alt-Shift-L
)
Dobre do dzielenia szybkiej linii 100 znaków na oddzielne kroki. - Metoda Ekstrakcji (
Alt-Shift-M
)
Utwórz metodę z jakiegoś kodu bez żadnych skutków ubocznych. - Deklaracja Zmiennej Split (
Ctrl-1
)
Dobrze gdy inicjalizujesz zmienną w deklaracja i teraz dowiadujemy się, że inicjalizacja musi być w bloku try - or if. - 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. - Pull Up / Push Down Metody i zmienne do ogólnego interfejsu lub klasy nadrzędnej lub push it down to a subclass
- Extract Interface / Superclass
Wyodrębnij interfejs lub klasę nadrzędną z bieżącej klasy. Bardzo poręczne.
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:
- zmiana nazwy
- Pull up / Push Down
- Metoda Ekstrakcji
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.
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.
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.
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.
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.
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:
Dla selekcji, która wymagałaby wielu wartości zwracanych w wyodrębnionej metodzie, Eclipse wyświetla teraz sprzeczne zmienne w komunikacie błędu:
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.
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.
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..
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