Java equivalente a #region em C #


489

Eu quero usar regiões para dobrar código no Eclipse ; como isso pode ser feito em Java?

Um exemplo de uso em C # :

#region name
//code
#endregion

@MichaelLaVoie: a resposta foi excluída. Alguma chance de mudar para outro site SE?
— Adam Parkin


Entrei na festa tarde. Concordo com a IKashef de que existem outras opções que a resposta selecionada atualmente. A resposta de Yaqub Ahmad salvou minha vida. Não precisei baixar o IDE inteligente. Fiz o download do plug-in CoffeeBytes mencionado no comentário de cking24343, apliquei a configuração de 'null n void' e funcionei bem no Luna. Você precisa reiniciar após a aplicação da configuração
— Maximus Decimus

3
começar //region [Description] e terminar com//endregion
— Amir Ziarati 8/17

Respostas:


216

Não existe esse padrão equivalente. Alguns IDEs - Intellij, por exemplo, ou Eclipse - podem dobrar dependendo dos tipos de código envolvidos (construtores, importações, etc.), mas não há nada parecido #region.


30
Na verdade, isso pode ser alcançado. Se você rolar para baixo nesta postagem, "Yaqub Ahmad" explica como obter essa funcionalidade. Também aqui está um link ( kosiara87.blogspot.com/2011/12/… ) que mostra como adicioná-lo ao seu ambiente eclipse existente ... extremamente útil!
— cking24343

14
Certo. Mas não há nada padrão . É realizado em IDEs ao invés de ter um construtor de linguagem (ou texto)
— Brian Agnew

2
@lKashef - então, qual é o equivalente padrão então? Tudo o que foi observado abaixo se refere a um IDE específico, não é?
— Brian Agnew

4
@BrianAgnew, o OP não mencionou nada sobre padrões, ele apenas queria ter blocos semelhantes a regiões em seu código. Por exemplo, você disse "mas não há nada como # região". no IDEA, por exemplo, // region .. // endregion funciona exatamente como #region. Não existe uma maneira padrão de fazer isso em primeiro lugar, pois depende do próprio IDE ou de um plug-in. Os desenvolvedores com experiência na Microsoft sempre verão o MS Visual Studio como "O" IDE, mas na verdade é apenas uma das opções e outro IDE pode ou não implementar essa funcionalidade.
— Mazen Elkashef 01/03

4
@BrianAgnew, eu quase desisti até ver as respostas de outras pessoas que ajudaram mais do que a sua. Sério, não há nenhum sentimento difícil aqui, estamos todos aqui para aprender e compartilhar nosso conhecimento e estou afirmando que fui enganada por sua resposta, talvez tenha sido boa em 2010, mas não hoje. Eu espero que você entenda meu lado.
— Mazen Elkashef

476

O Jet Brains IDEA possui esse recurso. Você pode usar o atalho surround para isso (ctrl + alt + T). É apenas o recurso IDEA.

As regiões ficam assim:

//region Description

Some code

//endregion

3
Obrigado por isso! Funciona perfeitamente no Android Studio.
— Rogcg

2
A pergunta solicita claramente uma solução para o Eclipse.
— Duncan Jones

5
@ Duncan 1. Nada de errado em mostrar às pessoas que existem alternativas. 2. Pesquisei nas regiões sob Intellij e encontrei.
— BHuelse

2
No Linux, essa tecla de atalho executa o terminal
— user1209216

1
Apenas tentei e parece que o IntelliJ também suporta regiões aninhadas! Pena que isso não é padrão.
— Gruber

209

Com o Android Studio, tente o seguinte:

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

Cuidado: nenhuma linha em branco após // região ...

E você receberá:


estava passando por todas as respostas e calculou que, como o Android Studio é baseado no IntelliJ, isso deve ser suportado. É bom ressaltar isso!
— serine

5
Bummi, eu experimentá-lo em 0.4.2 com uma linha em branco e ainda funciona
— serina

2
Apenas um comentário / conselho (e de modo algum uma resposta à sua pergunta). É uma opinião generalizada que as regiões devem ser evitadas, pois permitem ocultar a complexidade da classe em vez de trabalhar no seu estilo de codificação. Em vez de grandes classes, nas quais cada classe é responsável por muitas funcionalidades, trabalhe para dividir seu código em classes menores. Isso tornará seu código mais fácil de gerenciar ao longo do tempo. Leia mais aqui: blog.codinghorror.com/the-problem-with-code-folding
— Daniel Saidi

5
@DanielSaidi oh, o horror! :) o cara no artigo " Não consigo ver nada! Tenho que expandir manualmente essas seções para navegar por qualquer código nesta classe. " ... então, porque ele é preguiçoso demais para pressionar uma tecla (isso iria expandir tudo seções do arquivo), o recurso não deve ser usado - é um recurso maravilhoso. No momento, estou usando-o para ocultar um por um, os métodos que eu verifiquei são seguros para threads na classe em que estou trabalhando, realmente ajuda a manter a organização. Eu pensei que estava lá, mas isso é um preço pequeno a pagar ...
— ycomp 18/10/2015

4
@DanielSaidi Não se trata de ocultar complexidade, mas ocultar código mundano, como declarações de variáveis, getters, código de inicialização e assim por diante. Observe também que você NÃO exige #regions para recolher o "código complexo" encontrado nas funções e classes. A carne com programadores que usam uma ferramenta incorretamente não é "a ferramenta está ruim".
— user1567453

96

Não há equivalente no idioma ... Baseado em IDEs ...

Por exemplo, no netbeans:

O NetBeans / Creator suporta esta sintaxe:

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

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


1
Mesmo que não seja uma dobradura específica de idioma, mas ainda me ajudou no NetBeans. Exatamente o que eu queria alcançar. Só quero que meu código seja mais útil e organizado para mim.
— Indigo

Existe algum atalho que pode preencher automaticamente essa linha?
— Pini Cheyni

1
@ pini-cheyni - ui.netbeans.org/docs/ui/code_folding/cf_uispec.html tem atalhos disponíveis para dobrar ....
— Kevin LaBranche

@JadChahine: O OP perguntou sobre o Eclipse, mas concorda que isso funciona bem para o NetBeans. A sintaxe é um pouco desajeitada, mas copiar e colar facilita bastante.
— AlainD

50

7
+1 obrigado por esta informação. Como o site original do desenvolvedor do plug-in não está mais disponível em 2012 - eu encontrei uma breve descrição para instalação e uso .
— K3b

alguém encontrou uma alternativa intelectual?
— philx_x

O link para download não existe mais.
— DerHugo 31/07/19

49

O recurso de dobragem de código personalizado pode ser adicionado ao eclipse usando o plug-in de dobragem de código CoffeeScript.

Isso foi testado para funcionar com o eclipse Luna e Juno. Aqui estão os passos

  1. Faça o download do plugin aqui

  2. Extrair o conteúdo do arquivo

  3. Copie e cole o conteúdo do plugin e da pasta features na mesma pasta nomeada dentro do diretório de instalação do eclipse
  4. Reinicie o eclipse
  5. Navegar Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    insira a descrição da imagem aqui

  6. Crie uma nova região, como mostrado:

    insira a descrição da imagem aqui

  7. Reinicie o Eclipse.

  8. Experimente se a dobragem funciona com comentários prefixados com identificadores iniciais e finais especificados

    insira a descrição da imagem aqui

    insira a descrição da imagem aqui

Você pode baixar o arquivo e encontrar etapas neste blog também.


2
não está funcionando para mim no eclipse neon: copiar e colar não fez nada: a única coisa que mudou foi no marketplace >> plugins instalados >> update. Eu atualizei o plugin Coffeescript, mas eu não tive a opção "Select dobrável para uso" em java >> editor >> dobrar
— Angelo Oparah

Ele funcionou no Eclipse Oxygen, no entanto, você precisa reiniciar o eclipse novamente. O ícone apresentado para mim foi um ícone vermelho então eu mudei na configuração, Janela → Preferências → Java → Editor de → Folding clique em Avançado guia e alterar o conjunto tema Ícone de Modern
— Michieru

38

Este é mais um recurso do IDE do que um recurso do idioma. O Netbeans permite definir suas próprias definições de dobra usando a seguinte definição:

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

Conforme observado no artigo, isso também pode ser suportado por outros editores, mas não há garantias.


No Android studio, pelo menos, você não pode dobrar parte de um bloco. Se a especificação de dobra começar fora de um bloco e terminar dentro de um bloco, ela não será ativada.
— Prof Von Lemongargle

30

a maneira mais rápida de Android Studio(ou IntelliJ IDEA)

  1. highlight the code você quer cercá-lo
  2. pressione ctrl+ alt+t
  3. pressione c==> depois digite a descrição
  4. desfrutar

// region <name> Seu código ... // endregion É mais eficiente e simples! hehe; P
— diegodsp 28/03

30

AndroidStudioregião
Criar região

Primeiro , encontre (e defina atalho, se necessário) para o Surround Withmenu insira a descrição da imagem aqui

Em seguida , selecione o código, pressione Ctrl+Alt+Semicolon-> escolharegion..endregion...
insira a descrição da imagem aqui

Ir para a região

Primeiro, encontre o Custom Foldingatalho
insira a descrição da imagem aqui Segundo, em qualquer lugar do seu código, pressioneCtrl+Alt+Period('>' on keyboard) insira a descrição da imagem aqui


20

Ao contrário do que a maioria está postando, isso NÃO é uma coisa IDE. É uma coisa de linguagem. A região # é uma instrução C #.


55
O que mais está postando é que, EM JAVA, esse é um recurso do IDE.
— WhyNotHugo

1
Eu vejo as 2 respostas mais populares dizendo que não existe esse recurso de idioma. -1.
— precisa saber é o seguinte

23
Em C #, é parcialmente IDE, parcialmente linguagem. O idioma suporta as diretrizes do pré-processador, mas o pré-processador simplesmente as ignora (da mesma forma que o processador ignora os comentários). O IDE (Visual Studio) os utiliza para fazer dobragem de código.
— ADTC

Java não especificou o dobramento de código somente o IDE (Netbeans), o Netbeans possui mais comentários especiais como "TODO" e mais. Eles são muito úteis para acompanhar o seu progresso através do processo de desenvolvimento do projeto SW
— Pini Cheyni

17

Eu estava vindo de C # para java e tive o mesmo problema e a melhor e exata alternativa para região é algo como abaixo (trabalhando no Android Studio, não sei sobre o intelliJ):

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

o atalho é como abaixo:

1- selecione o código

2- pressione ctrl+ alt+t

3- pressione ce escreva sua descrição


No AndroidStudio versão 2.3.1, ele se dobra. Não sei quando começou a dobrar.
— MiguelSlv

Obrigado. Funciona perfeitamente no Android Studio 3.0 beta 2. Por curiosidade, tentei no Eclipse Oxygen, ele não funciona por padrão, mas não foi mais pesquisado.
— Laurent

15

A melhor maneira

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

Dica: coloque ";" no final da "região final"


1
eclipse não dobre o código, qual IDE você está usando?
— Oade Cohen

Ele funciona com Android Studio e IntelliJ IDEA (ambos são feitos de mesma base de código por JetBrains)
— prashu132

IDE significam "ambiente de desenvolvimento integrado"
— Pini Cheyni

12

Se alguém estiver interessado, no Eclipse você pode recolher todos os seus métodos etc. de uma só vez, basta clicar com o botão direito do mouse quando você normalmente inserir um ponto de interrupção, clicar em 'Dobrar'> 'Recolher tudo'. Ele sabe que não é uma resposta para a pergunta, mas apenas fornece uma alternativa para a dobragem rápida de código.


1
Você também pode fazer com que o Eclipse recolha automaticamente tudo ao abrir um arquivo de código-fonte. Preferências> Java> Editor> Dobrável> "Dobre esses elementos inicialmente" (marque todos na lista). Acho conveniente me concentrar apenas no que eu preciso, especialmente em arquivos de código fonte longos.
— ADTC

@ADTC - Obrigado - tantas centenas de vezes que eu o fiz manualmente toda vez que abro um arquivo - nunca mais !!
— ToolmakerSteve

@ToolmakerSteve Se você pode fazer algo repetitivo manualmente em um computador, só precisa haver uma maneira de automatizá-lo. = D
— ADTC

8
#region

// code

#endregion

Realmente só oferece algum benefício no IDE. Com Java, não há um padrão definido no IDE; portanto, não há um padrão paralelo #region.


3
Bem, se há um padrão para region, então podemos ter certeza de que do IDE java vai apoiá-lo, não é?
— Pacerier 19/11

@ Pacerier se eles suportam esse padrão, sim. Eu acho que #region é mais um recurso IDE do que um padrão. Em teoria do IDE java poderia implementar este comportamento e torná-lo um de-facto padrão
— El Mac

4

aqui está um exemplo:

//region regionName
//code
//endregion

100% funciona no estúdio Android


Não sei por que você recebeu votos negativos, isso realmente funciona no Android Studio sem nenhuma configuração necessária!
— maxdelia 20/03

2

Normalmente, eu preciso disso para o código comentado, então uso colchetes no início e no final.

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

Pode ser usado para trechos de código, mas pode criar problemas em algum código, pois altera o escopo da variável.


1

Na verdade, johann, o # indica que é uma diretiva de pré-processador, o que basicamente significa que diz ao IDE o que fazer.

No caso de usar #regione#endregion no seu código, NÃO faz diferença no código final, esteja ele presente ou não. Você realmente pode chamá-lo de um elemento de linguagem se usá-lo não mudar nada?

Além disso, o java não possui diretivas de pré-processador, o que significa que a opção de dobrar o código é definida por ide, no netbeans, por exemplo, com uma instrução // <code-fold>


1
você pode realmente chamá-lo de um elemento de linguagem se usá-lo não mudar nada? - que tal comentários ?!
— epeleg 21/09/11

2
Já ouvi o argumento de que não é uma função da linguagem. E esta pergunta "Você pode realmente chamá-lo de um elemento de linguagem se usá-lo não mudar nada?" é ridículo. Muitas vezes a refatoração está facilitando a leitura do código para humanos e não faz nada (espero) para impactar a função do código.
— Menefee 28/03

1

No Mac e Android Studio, siga esta sequência:

  1. Destaque o código fonte para dobrar
  2. Pressione Alt+ Command+t
  3. Selecione <editor-fold>

Além disso, você pode selecionar outras opções:

insira a descrição da imagem aqui


-1

No Eclipse, você pode recolher os colchetes que envolvem o bloco de região variável. O mais próximo é fazer algo assim:

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8
Isso é inútil. Ele não funciona dentro de um método, além de quebrar o código! (Variáveis privados se queixam de que eles querem ser final Variável sem definição do escopo não será acessível fora dos suportes internos.!)
— ADTC

1
Eu não gosto deste método, adiciona muitas chaves. Isso pode levar a um código confuso :(
— Broken_Window


-12

Há alguma opção para conseguir o mesmo, siga os pontos abaixo.

1) Abra o Macro Explorer:

2) Crie uma nova macro:

3) Nomeie "OutlineRegions" (ou o que você quiser)

4) Clique com o botão direito do mouse em "OutlineRegions" (Exibindo no Macro Explorer), selecione a opção "Edit" e cole o seguinte código VB nele:

    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) Salve a macro e feche o editor.

6) Agora vamos atribuir um atalho para a macro. Vá em Ferramentas-> Opções-> Ambiente-> Teclado e procure sua macro na caixa de texto "show command contendo" (Digite: Macro na caixa de texto, ele sugerirá o nome das macros, escolha a sua.)

7) agora, na caixa de texto, sob "Pressione as teclas de atalho", você pode inserir o atalho desejado. Eu uso Ctrl + M + N.

Usar:

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

8) Pressione a tecla de atalho salva

Veja abaixo o resultado:

insira a descrição da imagem aqui


Onde está o Macro Explorer? Estou usando o Eclipse 4.3.1 e não consigo encontrá-lo.
— Mohamed El-Nakib

1
Isso nem é Java?
— Burak Karakuş 31/03

@CJBS - re: o This code seems to be for Visual Basic.NETque sugere o IDE Visual Studio.
— Jesse Chisholm

@JesseChisholm - esse era o meu ponto. O OP quer Java, não VB, e tem como alvo o Eclipse IDE, não o VS.
— CJBS

1
Resposta RIP. Se ele estava usando visual studio, ele poderia ter usado apenas #regione#endregion
— PNDA
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.