Einfache Möglichkeit, Methoden einer Java-Klasse in IntelliJ neu anzuordnen?

81

Gibt es in IntelliJ eine einfachere Möglichkeit, Methoden innerhalb einer Klassenquelldatei neu anzuordnen, als den Code manuell auszuschneiden und einzufügen? Heutzutage brauche ich dies oft beim Umgestalten von Legacy-Code, z. B. um verwandte Methoden im Quellcode nahe beieinander zu verschieben.

In Eclipse AFAIK gibt es eine Ansicht ähnlich der Strukturansicht von IntelliJ, in der ich Methoden per Drag & Drop verschieben kann. Dies funktioniert jedoch nicht in IntelliJ und ich konnte auch keine Hinweise aus seiner Hilfe finden.

Ich verwende IntelliJ 9.0.2, um genau zu sein.

Péter Török
quelle
Ich denke, die beste Lösung wäre ein Formatierungswerkzeug, das Ihre Methoden automatisch ordnet. Prosa: Die Methoden sollten in der Art und Weise angeordnet sein, wie sie aufgerufen werden. Genau wie Sie einen Artikel in einer Zeitung lesen würden.
Chris311

Antworten:

107

Sie können einen Methodennamen auswählen und drücken: Ctrl+ Shift+ Upoder Ctrl+ Shift+ Down, um ihn auf und ab zu bewegen.

Unter OS X: Cmd+ Shift+ Upoder Cmd+ Shift+Down

Darüber hinaus können Sie mit dem Rearranger-Plugin Methoden schnell verschieben und sogar eine Standardreihenfolge basierend auf Ihrer Codierungskonvention definieren.

Retronym
quelle
Gibt es nicht etwas, das man zum Beispiel nur alphabetisch nachbestellen kann?
Jaime Hablutzel
Der Link ist tot, dies scheint der richtige zu sein: java.net/projects/rearranger
stian
@stian - Ich habe den Beitrag so bearbeitet, dass er auf die Plugin-Seite auf der JetBrains-Website verweist, da für den von Ihnen geposteten Link keine Downloads verfügbar zu sein scheinen
Adrian
5
Für Mac OS X: Befehlstaste + Umschalttaste + Aufwärts / Befehlstaste + Umschalttaste + Abwärts
Christian García
2
Seit IDEA 16 ist es über das Menü verfügbar:Code > Move Statement Up/Down
Lu55
23

Aufgrund eines Fehlers in IntelliJ noch keine perfekte Antwort .

IntelliJ bietet diese Funktion zwar implizit an, sie muss jedoch sowohl aktiviert als auch behoben werden. Der vom OP vorgeschlagene Weg besteht darin, Methoden technisch in der Reihenfolge erster Tiefe anzuordnen. Wenn Sie jedoch die Reihenfolge der Breite zuerst verwenden (was ordnungsgemäß funktioniert), sollte dies die manuelle Arbeit beim Verschieben von Funktionen erheblich reduzieren, indem alle Anrufer- und Angerufenen-Methoden zusammen angeordnet werden.

Problemlink: https://youtrack.jetbrains.com/issue/IDEA-149524 . Bitte stimmen Sie für die Entschließung.

IntellijRearrangeMethodsInDFO

Die entsprechende Aktion hierfür ist Code neu anordnen. Diesem ist kein Schlüssel zugewiesen, aber Sie können Ihren eigenen über Einstellungen-> Keymap definieren.

RearrangeActionMenuButton

Geben Sie hier die Bildbeschreibung ein

Saurabheights
quelle
22

IntelliJ verfügt über ein integriertes System, mit dem Sie festlegen können, wie Ihre Methoden bestellt werden sollen. Sie müssen zu Einstellungen (Strg + Alt + S) -> Editor -> Codestil -> Java -> Anordnung (Registerkarte) gehen und nach unten scrollen, bis Sie die Symbole mit finden methods. Dort können Sie die Optionen bearbeiten, um sie nach Sichtbarkeit oder alphabetisch zu sortieren oder verwandte Optionen in Gruppen zu halten. Hier ist ein Screenshot meiner Einstellungen, in dem Methoden automatisch nach Sichtbarkeit (öffentlich, geschützt, privat) und alphabetisch (az) sortiert werden. Die blauen Markierungen zeigen die aktuell ausgewählten Regeln.

Geben Sie hier die Bildbeschreibung ein

Georger
quelle
1
Wie kann ich eine Bestellauswahl auf eine oder mehrere Regeln gleichzeitig anwenden?
Derek Mahar
Das funktioniert überhaupt nicht. Die Verwendung dieser Konfiguration und das Durchführen von Rearrange führt zu nichts.
Mulgard
7

Mit dem Cursor auf der Methodendefinitionszeile (Sie müssen nicht ctrl+ shift+ upoder ctrl+ shift+ drücken down, um sich nach oben oder unten zu bewegen.

Sie können auch ctrl+ shift+ drücken, um alles schnell zu reduzieren, numberpad -damit Sie sich auf das Bewegen konzentrieren können (normal -funktioniert auch auf meinem Laptop, nicht sicher warum) und ctrl+ shift+ numberpad +, um wieder alles zu sehen (Strg-Umschalt-gleich funktioniert auf meinem Laptop als Gut).

Yishai
quelle
3

Wählen Sie einen Textblock aus (drücken Sie einige Male Strg-W) und bewegen Sie ihn dann mit Strg-Umschalt-Auf und Strg-Umschalt-Ab.

Jacob Mattison
quelle
1

Es gibt einen automatisierten Weg, den Sie später anpassen können

Code -> Dialogfeld "Formatierungsdatei neu anzeigen"

und aktivieren Sie das Kontrollkästchen "Code neu anordnen"

Alon
quelle