Switch-Anweisung einklappen

Hi,
ich hab jetzt n ziemlich großes Programm mit einer ziemlich großen Switch-Anweisung (>500 Zeilen und es wird noch deutlich mehr xD )
Das Problem ist jetzt, dass das ziemlich unübersichtlich ist, vor allem wenn ich dann dauern an den Anfang der Klasse muss, dann wieder an den Schluss und so weiter... Bei mir kann man allerdings nur Klassen und deren Methoden einklappen. Bei Microsoft Visual Studio zum Beispiel kann man jede if-Abfrage und so einklappen.
Zu meiner Frage: Kann man auch bei IntelliJ einstellen, dass ich Switch-, if-, while-Anweisungen/Schleifen einklappen kann? Wäre wirklich hilfreich!

Vielen Dank schonmal für alle Antworten!

Typ
 

JCODA

Top Contributor
Ich kann dir zwar keine Lösung für dein eigentliches Problem anbieten, aber mich würde es schon interessieren, warum es solch ein großes switch überhaupt gibt. Mir scheint als könnte man das bestimmt schöner lösen.
 

Tobse

Top Contributor
Ja, man kann IntelliJ so einstellen, dass man jeden Block einklappen kann. Aber ich sehe das wie JCODA: du hast vie zu viel Code in einer Datei. Und switch-statements sollten niemals länger als ein paar Zeilen sein; es macht in den meisten Fällen mehr sinn, if- und switch-abfragen durch Polymorphie zu ersetzen.
 
@JCODE Ich programmiere ein Minecraft Plugin, bei dem die Anzahl der abgebauten Blöcke eines Spielers gespeichert werden sollen, und zwar in Kategorien (z.B. Baumaterial, Dekoration, usw.) Und dafür muss ich überprüfen, welchen Stein der Spieler abgebaut hat, um diesen, dann einer Kategorie zuzuordnen.
Mir war auch von Anfang an klar, dass Switch hier meine letzte Lösung wäre, aber da ich nichts anderes gefunden habe, musst ich das leider verwenden :(
Tobse, Danke auch für Deine Antwort, aber ich weiß irgendwie nicht, wie mir hier Polymorphie helfen soll?

Edit: Ja man kann es sicher schöner lösen, ich wäre auch hier für Hilfe sehr dankbar :)
 

JCODA

Top Contributor
In welcher "Form" liegt die Information der Kategorie vor?
Möchtest du nur die Zuordnung machen? Dann könnte es sich anbieten Listen zu erstellen, die die Blöcke beinhalten, und dann mit contains() abzufragen, ob vorhanden.
 

mrBrown

Super-Moderator
Mitarbeiter
UU könnte man eine Map statt dem switch nutzen. Die mappt Stein auf Kategorie, ist dann auch leichter erweiterbar als ein switch, da man nur Daten eintragen muss (die man dann auch extern speichern könnte) und nicht den Code ändern muss.
 

Baldur

Aktives Mitglied
Ich würd da vielleicht schon soweit gehn und die Information ganz aus dem Quellcode rausnehmen.
Ggf. kannst du eine CSV- oder Properties-Datei o.ä. schreiben, die deine Zuordnungen beinhaltet und daraus dann die Information z.B. in eine HashMap einlesen.

Aber zur ursprünglichen Frage:
In IntelliJ kann man auch eigene Codefoldblöcke mti speziellen Kommentaren anlegen:
Java:
//<editor-fold desc="Description">
Lustiger Code
//</editor-fold>

//region Description
Anderer Code
//endregion

Einfach erreichbar via Code / Surround with...

Die erste Variante funktioniert übrigens auch in Netbeans.

Aber generell, wenn man Funktionen hat die mehrere hundert Zeilen lang sind, sollte man sich erst mal in die Ecke stellen und sich schämen ;)
 

Ähnliche Java Themen

Neue Themen


Oben