Java entspricht #region in C #


489

Ich möchte Regionen zum Falten von Code in Eclipse verwenden . Wie geht das in Java?

Ein Beispiel für die Verwendung in C # :

#region name
//code
#endregion

@ MichaelLaVoie: Antwort wurde gelöscht. Gibt es eine Chance, dass es an einen anderen SE-Standort verlegt wurde?
Adam Parkin

1

Ich bin spät zur Party gekommen. Ich stimme IKashef zu, dass es andere Optionen gibt, als die aktuell ausgewählte Antwort. Die Antwort von Yaqub Ahmad hat mir das Leben gerettet. Ich musste die Intellig IDE nicht herunterladen. Ich habe das erwähnte CoffeeBytes-Plugin aus dem Kommentar von cking24343 heruntergeladen, die Konfiguration von 'null n void' angewendet und in Luna gut funktioniert. Sie müssen nach dem Anwenden der Konfiguration neu starten
Maximus Decimus

3
Beginnen Sie mit //region [Description] und enden Sie mit//endregion
Amir Ziarati

Antworten:


216

Es gibt kein solches Standardäquivalent . Einige IDEs - beispielsweise Intellij oder Eclipse - können je nach den beteiligten Codetypen (Konstruktoren, Importe usw.) gefaltet werden, aber es gibt nichts Vergleichbares #region.


30
Eigentlich kann dies erreicht werden. Wenn Sie in diesem Beitrag nach unten scrollen, erklärt "Yaqub Ahmad", wie Sie diese Funktionalität erhalten. Hier ist auch ein Link ( kosiara87.blogspot.com/2011/12/… ), der Ihnen zeigt, wie Sie ihn zu Ihrer vorhandenen Eclipse-Umgebung hinzufügen können ... äußerst nützlich!
cking24343

14
Sicher. Aber es gibt nichts Standard . Es wird in IDEs ausgeführt, anstatt ein Sprach- (oder Text-) Konstrukt zu haben
Brian Agnew

2
@lKashef - was ist dann das Standardäquivalent ? Alles, was unten angegeben ist, bezieht sich auf eine bestimmte IDE, nicht wahr?
Brian Agnew

4
@BrianAgnew, Das OP hat nichts über Standards erwähnt, stattdessen möchte er nur regionenspezifische Blöcke in seinem Code haben können. Zum Beispiel sagten Sie "aber es gibt nichts Vergleichbares wie #region." in IDEA zum Beispiel // region .. // endregion funktioniert genau wie #region. Es gibt überhaupt keine Standardmethode, da dies von der IDE selbst oder einem Plugin abhängt. Entwickler mit Microsoft-Hintergrund sehen MS Visual Studio immer als "die" IDE, aber tatsächlich ist dies nur eine der Optionen, und eine andere IDE implementiert möglicherweise solche Funktionen oder nicht.
Mazen Elkashef

4
@BrianAgnew, ich hätte fast aufgegeben, bis ich die Antworten anderer Leute sah, die mehr halfen als deine. Ernsthaft kein schweres Gefühl hier. Wir sind alle hier, um unser Wissen zu lernen und zu teilen und erklären die Tatsache, dass ich durch Ihre Antwort irregeführt wurde. Vielleicht war es 2010 eine gute, aber heute nicht. Ich hoffe du verstehst meinen Standpunkt.
Mazen Elkashef

476

Jet Brains IDEA verfügt über diese Funktion. Sie können dafür Hotkey Surround verwenden (Strg + Alt + T). Es ist nur eine IDEA-Funktion.

Die Regionen dort sehen folgendermaßen aus:

//region Description

Some code

//endregion

3
Dank dafür! Funktioniert perfekt unter Android Studio.
Rogcg

2
Die Frage fordert eindeutig eine Lösung für Eclipse.
Duncan Jones

5
@ Duncan 1. Es ist nichts Falsches, den Leuten zu zeigen, dass es Alternativen gibt. 2. Ich google nach Regionen unter Intellij und habe sie gefunden.
BHuelse

2
Unter Linux führt dieser Hotkey das Terminal aus
user1209216

1
Ich habe es gerade versucht und es scheint, dass IntelliJ auch verschachtelte Regionen unterstützt! Schade, dass dies nicht Standard ist.
Gruber

209

Versuchen Sie mit Android Studio Folgendes:

//region VARIABLES
private String _sMyVar1;
private String _sMyVar2;
//endregion

Achtung: keine Leerzeile nach // Region ...

Und du wirst bekommen:


Ich habe alle Antworten durchgesehen und herausgefunden, dass Android Studio auf IntelliJ basiert. Dann muss dies unterstützt werden. gut, darauf hinzuweisen!
Serine

5
bummi, ich habe es in 0.4.2 mit einer leeren Zeile versucht und funktioniert immer noch
Serine

2
Nur ein Kommentar / Rat (und keinesfalls eine Antwort auf Ihre Frage). Es ist eine weit verbreitete Meinung, dass Regionen vermieden werden sollten, da Sie damit die Komplexität von Klassen verbergen können, anstatt an Ihrem Codierungsstil zu arbeiten. Anstelle von großen Klassen, in denen jede Klasse für viele Funktionen verantwortlich ist, sollten Sie stattdessen Ihren Code in kleinere Klassen aufteilen. Dadurch wird die Verwaltung Ihres Codes im Laufe der Zeit einfacher. Lesen Sie hier mehr: blog.codinghorror.com/the-problem-with-code-folding
Daniel Saidi

5
@ DanielSaidi oh, der Horror! :) der Typ im Artikel " Ich kann nichts sehen! Ich muss diese Abschnitte manuell erweitern, um den Code in dieser Klasse zu durchsuchen. " ... also, weil er zu faul ist, um eine Taste zu drücken (das würde alles erweitern Abschnitte in der Datei), die Funktion darf nicht verwendet werden - es ist eine super wunderbare Funktion. Im Moment verwende ich es, um die Methoden, die ich überprüft habe, in der Klasse, in der ich arbeite, nacheinander zu verbergen. Es hilft wirklich, organisiert zu bleiben. Ab und zu habe ich mich gefragt, wo etwas ist Ich dachte war da, aber das ist ein kleiner Preis zu zahlen ...
ycomp

4
@DanielSaidi Es geht nicht darum, Komplexität zu verbergen, sondern um alltäglichen Code wie Variablendeklarationen, Getter, Initialisierungscode usw. zu verbergen. Beachten Sie auch, dass Sie NICHT #regions benötigen, um den in Funktionen und Klassen enthaltenen "komplexen Code" zu reduzieren. Das Rindfleisch mit Programmierern, die ein Werkzeug falsch verwenden, bedeutet nicht "das Werkzeug ist schlecht".
Benutzer1567453

96

Kein Äquivalent in der Sprache ... Basierend auf IDEs ...

Zum Beispiel in Netbeans:

NetBeans / Creator unterstützt diese Syntax:

// <editor-fold defaultstate="collapsed" desc="Your Fold Comment">
...
// </editor-fold>

http://forums.java.net/jive/thread.jspa?threadID=1311


1
Obwohl es keine sprachspezifische Faltung ist, hat es mir trotzdem in NetBeans geholfen. Genau das, was ich erreichen wollte. Ich möchte nur, dass mein Code für mich praktischer und organisierter ist.
Indigo

Gibt es eine Verknüpfung, die diese Zeile automatisch ausfüllen kann?
Pini Cheyni

1
@ pini-cheyni - ui.netbeans.org/docs/ui/code_folding/cf_uispec.html hat Verknüpfungen zum Falten verfügbar ....
Kevin LaBranche

@JadChahine: Das OP hat nach Eclipse gefragt, stimmt jedoch zu, dass dies für NetBeans gut funktioniert. Die Syntax ist etwas ungeschickt, aber das Kopieren und Einfügen macht es einfach genug.
AlainD

50

7
+1 danke für diese Info. Da die ursprüngliche Website des Entwicklers des Plugins 2012 nicht mehr verfügbar ist, habe ich eine kurze Beschreibung für die Installation und Verwendung gefunden .
K3B

hat jemand eine intelligente Alternative gefunden?
philx_x

Der Download-Link existiert nicht mehr.
derHugo

49

Mit dem CoffeeScript-Code-Falt-Plugin kann Eclipse eine benutzerdefinierte Funktion zum Falten von Code hinzugefügt werden.

Dies wurde getestet, um mit Eclipse Luna und Juno zu arbeiten. Hier sind die Schritte

  1. Laden Sie das Plugin hier herunter

  2. Extrahieren Sie den Inhalt des Archivs

  3. Kopieren Sie den Inhalt des Plugins und des Funktionsordners in den gleichnamigen Ordner im Eclipse-Installationsverzeichnis
  4. Starten Sie die Sonnenfinsternis neu
  5. Navigieren Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    Geben Sie hier die Bildbeschreibung ein

  6. Erstellen Sie eine neue Region wie gezeigt:

    Geben Sie hier die Bildbeschreibung ein

  7. Starten Sie die Eclipse neu.

  8. Probieren Sie aus, ob das Falten mit Kommentaren funktioniert, denen die angegebenen Start- und Endbezeichner vorangestellt sind

    Geben Sie hier die Bildbeschreibung ein

    Geben Sie hier die Bildbeschreibung ein

Sie können das Archiv herunterladen und Schritte auch in diesem Blog finden .


2
Ich habe bei Eclipse Neon nicht funktioniert: Kopieren und Einfügen hat nichts bewirkt: Das einzige, was sich geändert hat, war unter Marktplatz >> installierte Plugins >> Update. Ich habe das CoffeeScript-Plugin aktualisiert, aber ich habe unter Java >> Editor >> Falten
Angelo Oparah

Es hat in der Eclipse Oxygen funktioniert, Sie müssen die Eclipse jedoch erneut starten. Das Symbol, das mir angezeigt wurde, war ein rotes Symbol, daher habe ich die Konfiguration geändert: Fenster → Einstellungen → Java → Editor → Falten. Klicken Sie auf die Registerkarte Erweitert und ändern Sie das
Symbolthema

38

Dies ist eher eine IDE-Funktion als eine Sprachfunktion. Mit Netbeans können Sie Ihre eigenen Faltdefinitionen mithilfe der folgenden Definition definieren:

// <editor-fold defaultstate="collapsed" desc="user-description">
  ...any code...
// </editor-fold>

Wie im Artikel erwähnt, wird dies möglicherweise auch von anderen Redakteuren unterstützt, es gibt jedoch keine Garantien.


Zumindest in Android Studio können Sie einen Teil eines Blocks nicht falten. Wenn die Falzspezifikation außerhalb eines Blocks beginnt und innerhalb eines Blocks endet, wird sie nicht aktiviert.
Prof. Von Lemongargle

30

der schnellste Weg in Android Studio(oder IntelliJ IDEA)

  1. highlight the code du willst es umgeben
  2. Drücken Sie ctrl+ alt+t
  3. Drücken Sie c==> und geben Sie die Beschreibung ein
  4. genießen

// region <name> Ihr Code ... // endregion Ist effizienter und einfacher! hehe; P
diegodsp

30

AndroidStudioregion Region
erstellen

Zunächst findet (und kurz geschnitten , wenn Bedarf definiert) für Surround WithMenü Geben Sie hier die Bildbeschreibung ein

Dann wählen Sie den Code, drücken Sie Ctrl+Alt+Semicolon-> wählenregion..endregion...
Geben Sie hier die Bildbeschreibung ein

Gehe in die Region

Suchen Sie zuerst die Custom FoldingVerknüpfung.
Geben Sie hier die Bildbeschreibung ein Zweitens drücken Sie an einer beliebigen Stelle in Ihrem CodeCtrl+Alt+Period('>' on keyboard) Geben Sie hier die Bildbeschreibung ein


20

Im Gegensatz zu dem, was die meisten veröffentlichen, ist dies KEINE IDE-Sache. Es ist eine Sprachsache. Die #region ist eine C # -Anweisung.


55
Was die meisten posten, ist, dass dies in JAVA eine IDE-Funktion ist.
WhyNotHugo

1
Ich sehe die 2 beliebtesten Antworten, die besagen, dass es keine solche Sprachfunktion gibt. -1.
Mohayemin

23
In C # ist es teilweise IDE, teilweise Sprache. Die Sprache unterstützt die Präprozessoranweisungen, aber der Präprozessor ignoriert sie einfach (genauso wie der Prozessor Kommentare ignoriert). Die IDE (Visual Studio) verwendet sie zum Falten von Code.
ADTC

Java hat keinen Code angegeben, der nur die IDE (Netbeans) faltet. Netbeans hat speziellere Kommentare wie "TODO" und mehr. Sie sind sehr nützlich, um Ihren Fortschritt durch den SW-Projektentwicklungsprozess zu verfolgen
Pini Cheyni

17

Ich kam von C # nach Java und hatte das gleiche Problem und die beste und genaueste Alternative für die Region ist wie folgt (in Android Studio arbeiten, weiß nichts über IntelliJ):

 //region [Description]
 int a;
 int b;
 int c;
//endregion

Die Verknüpfung ist wie folgt:

1- Wählen Sie den Code

2- Drücken Sie ctrl+ alt+t

3- Drücken Sie cund schreiben Sie Ihre Beschreibung


In AndroidStudio Version 2.3.1 klappt es. Ich weiß nicht, wann es anfing zu klappen.
MiguelSlv

Vielen Dank. Funktioniert perfekt in Android Studio 3.0 Beta 2. Aus Neugier habe ich es in Eclipse Oxygen versucht. Es funktioniert standardmäßig nicht, hat aber nicht weiter gesucht.
Laurent

15

Der beste Weg

//region DESCRIPTION_REGION
int x = 22;
// Comments
String s = "SomeString";
//endregion;

Tipp: Setzen Sie ";" am Ende der "Endregion"


1
Eclipse falten Sie den Code nicht, welche IDE verwenden Sie?
Ohad Cohen

Es funktioniert mit Android Studio und IntelliJ IDEA (beide werden von JetBrains aus derselben Codebasis hergestellt)
prashu132

IDE steht für "integrierte Entwicklungsumgebung"
Pini Cheyni

12

Wenn jemand interessiert ist, können Sie in Eclipse alle Ihre Methoden usw. auf einmal reduzieren. Klicken Sie einfach mit der rechten Maustaste, wenn Sie normalerweise einen Haltepunkt einfügen, und klicken Sie auf "Falten"> "Alle reduzieren". Es ist keine Antwort auf die Frage, sondern lediglich eine Alternative zum schnellen Falten von Code.


1
Sie können Eclipse auch beim Öffnen einer Quellcodedatei alles automatisch reduzieren lassen. Einstellungen> Java> Editor> Falten> "Diese Elemente zunächst falten" (alle in der Liste überprüfen). Ich finde es bequem, mich nur auf das zu konzentrieren, was ich gerade in langen Quellcodedateien brauche.
ADTC

@ADTC - Danke - so viele hundert Male habe ich es jedes Mal manuell gemacht, wenn ich eine Datei öffne - nie wieder !!
ToolmakerSteve

@ToolmakerSteve Wenn Sie etwas wiederholend auf einem Computer manuell tun können, gibt nur hat einen Weg , um es zu automatisieren. = D
ADTC

8
#region

// code

#endregion

Sie erhalten wirklich nur einen Vorteil in der IDE. Mit Java gibt es keinen festgelegten Standard in der IDE, also gibt es wirklich keinen Standard parallel dazu #region.


3
Wenn es einen Standard gibt region, können wir sicher sein, dass Java-IDEs ihn unterstützen, nicht wahr?
Pacerier

@ Pacerier, wenn sie diesen Standard unterstützen, ja. Ich denke, #region ist eher eine IDE-Funktion als ein Standard. Theoretisch könnten die Java-IDEs dieses Verhalten implementieren und es zu einem De-facto-Standard machen
El Mac,

4

Hier ist ein Beispiel:

//region regionName
//code
//endregion

100% funktioniert in Android Studio


Ich weiß nicht, warum Sie herabgestuft wurden, dies funktioniert tatsächlich in Android Studio, ohne dass eine Konfiguration erforderlich ist!
Maxdelia

2

Normalerweise benötige ich dies für kommentierten Code, daher verwende ich zu Beginn und am Ende geschweifte Klammern.

{
// Code
// Code
// Code
// Code
}

Es kann für Codefragmente verwendet werden, kann jedoch in einigen Codes zu Problemen führen, da es den Gültigkeitsbereich der Variablen ändert.


1

Eigentlich zeigt johann an, #dass es sich um eine Präprozessor-Direktive handelt, was im Grunde bedeutet, dass sie der IDE mitteilt, was zu tun ist.

Bei der Verwendung von #regionund #endregionin Ihrem Code spielt es für den endgültigen Code keine Rolle, ob er vorhanden ist oder nicht. Können Sie es wirklich als Sprachelement bezeichnen, wenn sich durch die Verwendung nichts ändert?

Abgesehen davon hat Java keine Präprozessor-Direktiven, was bedeutet, dass die Option der Code-Faltung pro Idee definiert wird, beispielsweise in Netbeans mit einer // <code-fold> -Anweisung


1
Kannst du es wirklich ein Sprachelement nennen, wenn die Verwendung nichts ändert? - wie wäre es mit Kommentaren ?!
Epeleg

2
Ich habe das Argument schon einmal gehört, dass es keine Funktion der Sprache ist. Und diese Frage "Kannst du es wirklich ein Sprachelement nennen, wenn die Verwendung nichts ändert?" ist lächerlich. Viel Zeit beim Refactoring erleichtert das Lesen des Codes für den Menschen und wirkt sich (hoffentlich) nicht auf die Funktion des Codes aus.
Menefee

1

Befolgen Sie auf Mac und Android Studio die folgende Reihenfolge:

  1. Markieren Sie den zu faltenden Quellcode
  2. Drücken Sie Alt+ Command+t
  3. Wählen <editor-fold>

Sie können auch andere Optionen auswählen:

Geben Sie hier die Bildbeschreibung ein


-1

In Eclipse können Sie die Klammern, die den variablen Bereichsblock umschließen, reduzieren. Am nächsten ist es, so etwas zu tun:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8
Das ist nutzlos. Es funktioniert nicht innerhalb einer Methode und es bricht den Code! (Private Variablen werden sich beschweren, dass sie endgültig sein wollen. Variablen ohne Bereichsdefinition sind außerhalb der inneren Klammern nicht zugänglich!)
ADTC

1
Ich mag diese Methode nicht, fügt zu viele geschweifte Klammern hinzu. Dies kann zu verwirrendem Code führen :(
Broken_Window


-12

Es gibt einige Optionen, um dasselbe zu erreichen. Befolgen Sie die folgenden Punkte.

1) Öffnen Sie den Makro-Explorer:

2) Neues Makro erstellen:

3) Nennen Sie es "OutlineRegions" (oder was auch immer Sie wollen)

4) Klicken Sie mit der rechten Maustaste auf "OutlineRegions" (wird im Makro-Explorer angezeigt), wählen Sie die Option "Bearbeiten" und fügen Sie den folgenden VB-Code ein:

    Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Collections

Public Module OutlineRegions

    Sub OutlineRegions()
        Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection

        Const REGION_START As String = "//#region"
        Const REGION_END As String = "//#endregion"

        selection.SelectAll()
        Dim text As String = selection.Text
        selection.StartOfDocument(True)

        Dim startIndex As Integer
        Dim endIndex As Integer
        Dim lastIndex As Integer = 0
        Dim startRegions As Stack = New Stack()

        Do
            startIndex = text.IndexOf(REGION_START, lastIndex)
            endIndex = text.IndexOf(REGION_END, lastIndex)

            If startIndex = -1 AndAlso endIndex = -1 Then
                Exit Do
            End If

            If startIndex <> -1 AndAlso startIndex < endIndex Then
                startRegions.Push(startIndex)
                lastIndex = startIndex + 1
            Else
                ' Outline region ...
                selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
                selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
                selection.OutlineSection()

                lastIndex = endIndex + 1
            End If
        Loop

        selection.StartOfDocument()
    End Sub

    Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
        Dim lineNumber As Integer = 1
        Dim i As Integer = 0

        While i < index
            If text.Chars(i) = vbCr Then
                lineNumber += 1
                i += 1
            End If

            i += 1
        End While

        Return lineNumber
    End Function
End Module

5) Speichern Sie das Makro und schließen Sie den Editor.

6) Weisen wir nun dem Makro eine Verknüpfung zu. Gehen Sie zu Extras-> Optionen-> Umgebung-> Tastatur und suchen Sie nach Ihrem Makro im Textfeld "Befehle mit" anzeigen (Geben Sie: Makro in das Textfeld ein, es wird der Name des Makros vorgeschlagen, wählen Sie Ihren aus.)

7) Jetzt können Sie im Textfeld unter "Tastenkombinationen drücken" die gewünschte Tastenkombination eingeben. Ich benutze Strg + M + N.

Verwenden:

return
{
//Properties
//#region
Name:null,
Address:null
//#endregion
}

8) Drücken Sie die gespeicherte Tastenkombination

Siehe folgendes Ergebnis:

Geben Sie hier die Bildbeschreibung ein


Wo ist der Makro-Explorer? Ich verwende Eclipse 4.3.1 und kann es nicht finden.
Mohamed El-Nakib

1
Das ist nicht mal Java?
Burak Karakuş

@CJBS - re: This code seems to be for Visual Basic.NETwas darauf hindeuten würde, dass die IDE ist Visual Studio.
Jesse Chisholm

@ JesseChisholm - das war mein Punkt. Das OP möchte Java, nicht VB, und zielt auf die Eclipse-IDE ab, nicht auf VS.
CJBS

1
RIP-Antwort. Wenn er Visual Studio benutzt hätte, hätte er es einfach benutzen können #regionund#endregion
PNDA
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.