Prosty sposób na zmianę kolejności metod klasy Java w IntelliJ?

83

Czy istnieje prostszy sposób zmiany kolejności metod w pliku źródłowym klasy w IntelliJ niż ręczne wycinanie i wklejanie kodu? W dzisiejszych czasach często tego potrzebuję podczas refaktoryzacji starszego kodu, np. Aby zbliżyć powiązane metody do siebie w kodzie źródłowym.

W Eclipse AFAIK jest widok podobny do widoku Structure w IntelliJ, w którym mogę przeciągać i upuszczać metody. Jednak to nie działa w IntelliJ i nie mogłem znaleźć żadnych wskazówek w jego pomocy.

Aby być konkretnym, używam IntelliJ 9.0.2.

Péter Török
źródło
Myślę, że najlepszym rozwiązaniem byłoby narzędzie do formatowania, które automatycznie porządkuje metody. Proza: Metody powinny być uporządkowane w sposób, w jaki się je nazywa. Tak jak czytasz artykuł w gazecie.
Chris311

Odpowiedzi:

109

Możesz wybrać nazwę metody i nacisnąć: Ctrl+ Shift+ Uplub Ctrl+ Shift+, Downaby przesunąć ją w górę iw dół.

W systemie OS X: Cmd+ Shift+ Uplub Cmd+ Shift+Down

Poza tym wtyczka przegrupowania umożliwia szybkie przenoszenie metod, a nawet definiowanie standardowej kolejności w oparciu o konwencję kodowania.

retronim
źródło
czy nie ma czegoś, co można po prostu uporządkować alfabetycznie, na przykład?
Jaime Hablutzel
Link jest martwy, wydaje się, że jest poprawny: java.net/projects/rearranger
stian
@stian - Zmieniłem post tak, aby wskazywał na stronę wtyczki na stronie JetBrains, ponieważ wydaje się, że w opublikowanym przez Ciebie linku nie ma żadnych dostępnych plików do pobrania
adrian
5
Dla Mac OS X: Cmd + Shift + Up / Cmd + Shift + Down
Christian García,
2
Od IDEA 16 jest dostępny w menu:Code > Move Statement Up/Down
Lu55
24

Nie jest to jeszcze doskonała odpowiedź powodu błędu w IntelliJ.

Chociaż IntelliJ oferuje tę funkcję niejawnie, ale należy ją włączyć, a także naprawić. Sugerowanym sposobem PO jest techniczne uporządkowanie metod w kolejności od początku do końca. Jeśli jednak korzystasz z porządkowania według szerokości (które działa poprawnie), powinno to znacznie zmniejszyć ręczną pracę funkcji przenoszenia, łącząc wszystkie metody wywołującego i wywoływanego.

Link do problemu: https://youtrack.jetbrains.com/issue/IDEA-149524 . Prosimy o głosowanie za jego rezolucją.

IntellijRearrangeMethodsInDFO

Odpowiednią czynnością w tym celu jest Zmień kolejność kodu. Nie ma przypisanego klawisza, ale możesz zdefiniować swój własny za pomocą Preferencje-> Mapa klawiszy.

RerangeActionMenuButton

wprowadź opis obrazu tutaj

saurabheights
źródło
24

IntelliJ ma wbudowany system, który pozwala określić sposób porządkowania metod. Musisz przejść do Ustawień (Ctrl + Alt + S) -> Edytor -> Styl kodu -> Java -> Układ (karta) i przewijać w dół, aż znajdziesz ikony z methods. Tam możesz manipulować opcjami, aby posortować je według widoczności lub alfabetycznie, lub aby zachować powiązane grupy razem. Oto zrzut ekranu moich ustawień, które automatycznie uporządkują metody według widoczności (publiczne, chronione, prywatne) i alfabetycznie (az). Niebieskie podświetlenia pokazują aktualnie wybrane reguły.

wprowadź opis obrazu tutaj

George
źródło
1
Jak mogę zastosować wybór zamówienia do jednej lub kilku reguł jednocześnie?
Derek Mahar
To w ogóle nie działa. Korzystanie z tej konfiguracji i zmiana kolejności nic nie daje.
Mulgard
To rozwiązanie działa z domyślną kolejnością. Dzięki!
Pan Polywhirl
7

Ustaw kursor na linii definicji metody (nie musisz i naciskaj ctrl+ shift+ uplub ctrl+ shift+down , aby poruszać się odpowiednio w górę lub w dół.

Możesz także ctrl+ shift+, numberpad -aby szybko zwinąć wszystko, abyś mógł skupić się na poruszaniu się (zwykły -działa również na moim laptopie, nie wiem dlaczego) i ctrl+ shift+, numberpad +aby wrócić i zobaczyć wszystko (ctrl-shift-equals działa na moim laptopie jako dobrze).

Yishai
źródło
3

Wybierz blok tekstu (naciśnij kilka razy Ctrl-W), a następnie użyj Ctrl-Shift-Up i Ctrl-Shift-Down, aby go przesuwać.

Jacob Mattison
źródło
1

Istnieje zautomatyzowany sposób, który można później dostosować

Kod -> pokaż okno dialogowe ponownego formatowania pliku

i zaznacz pole „przestaw kod”

Alon
źródło