547 Stimmen

Java-Äquivalent zu #region in C#

Ich möchte in Eclipse Regionen für das Code-Folding verwenden; wie kann das in Java gemacht werden?

Ein Beispiel für die Verwendung in C#:

#region name
//code
#endregion

2 Stimmen

programmers.stackexchange.com/fragen/53086/… scheint ähnlich im Geist zu sein.

0 Stimmen

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 nicht den Intellig IDE herunterladen. Ich habe das erwähnte CoffeeBytes-Plugin aus dem Kommentar von cking24343 heruntergeladen, habe die Konfiguration von 'null n void' angewendet und es hat gut in Luna funktioniert. Sie müssen nach dem Anwenden der Konfiguration neu starten.

3 Stimmen

Beginnen Sie mit //region [Beschreibung] und enden Sie mit //endregion

1voto

siriusblack Punkte 19

Eigentlich Johann, das # gibt an, dass es sich um eine Präprozessoranweisung handelt, die im Grunde genommen dem IDE sagt, was zu tun ist.

Im Fall der Verwendung von #region und #endregion in Ihrem Code macht es KEINEN Unterschied im endgültigen Code, ob es vorhanden ist oder nicht. Kann man es wirklich als eine Sprachelement bezeichnen, wenn sich durch die Verwendung nichts ändert?

Abgesehen davon hat Java keine Präprozessoranweisungen, was bedeutet, dass die Option des Code-Foldings auf einer IDE-spezifischen Basis definiert ist, z.B. in Netbeans mit einer //< code-fold> Anweisung

1 Stimmen

Kannst du es wirklich ein Sprachelement nennen, wenn sich durch die Verwendung nichts ändert? - Wie sieht es mit Kommentaren aus ?!

2 Stimmen

Ich habe das Argument schon einmal gehört, dass es nicht eine Funktion der Sprache ist. Und die Frage "Kann man es wirklich ein Sprachelement nennen, wenn sich durch die Verwendung nichts ändert?" ist lächerlich. Oftmals bedeutet Refactoring, den Code für Menschen leichter lesbar zu machen, ohne (hoffentlich) die Funktion des Codes zu beeinflussen.

-1voto

Dennis Punkte 15

In Eclipse können Sie die Klammern um den Variablenbereich blockieren. Am nächsten ist es, etwas wie das zu tun:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8 Stimmen

Dies ist nutzlos. Es funktioniert nicht innerhalb einer Methode, und es ZERBRICHT DEN CODE! (Private Variablen werden sich beschweren, dass sie final sein wollen. Variablen ohne Sichtbarkeitsdefinition sind außerhalb der inneren Klammern nicht zugänglich!)

1 Stimmen

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

-3voto

acmoune Punkte 2293

Einfach das Coffee-Bytes-Plugin (Eclipse) installieren und aktivieren

0 Stimmen

Nicht nur wird dies in einer früheren Antwort erwähnt, sondern Sie haben auch keine nützlichen Informationen dazu bereitgestellt.

-12voto

Abhishek Punkte 913

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

1) Öffnen Sie den Makro-Explorer:

2) Erstellen Sie ein neues Makro:

3) Benennen Sie es "OutlineRegions" (Oder wie auch immer Sie möchten)

4) Klicken Sie mit der rechten Maustaste auf "OutlineRegions" (Im Makro-Explorer angezeigt) und wählen Sie die Option "Bearbeiten" aus. 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
                ' Region gliedern...
                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 Sie jetzt eine Tastenkombination für das Makro zu. Gehen Sie zu Tools->Optionen->Umgebung->Tastatur und suchen Sie in der Textbox "Befehle anzeigen, die enthalten" nach Ihrem Makro (Typ: Macro in das Textfeld ein, es wird den Namen des Makros vorschlagen, wählen Sie Ihres aus.)

7) Geben Sie nun die gewünschte Tastenkombination in das Textfeld unter "Tastenkombination drücken" ein. Ich benutze Strg+M+N.

Verwenden Sie:

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

8) Drücken Sie die gespeicherte Tastenkombination

Sehen Sie das Ergebnis unten:

Bildbeschreibung hier eingeben

0 Stimmen

Wo ist der Makro-Explorer? Ich verwende Eclipse 4.3.1 und kann ihn nicht finden.

1 Stimmen

Das ist nicht einmal Java?

0 Stimmen

@CJBS - Betreff: Dieser Code scheint für Visual Basic.NET zu sein, was darauf hindeutet, dass die IDE Visual Studio ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X