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.


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.


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


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


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).


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ć.


1

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

Kod -> pokaż okno dialogowe ponownego formatowania pliku

i zaznacz pole „przestaw kod”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.