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
Pentium10
fonte
@MichaelLaVoie: a resposta foi excluída. Alguma chance de mudar para outro site SE?
Adam Parkin
1
programmers.stackexchange.com/questions/53086/… parece similar em espírito.
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.

Brian Agnew
fonte
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
Alexander Bezrodniy
fonte
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á:

Cyril Jacquart
fonte
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

Kevin LaBranche
fonte
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
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.

DeltaCap019
fonte
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.

pesado
fonte
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
Basheer AL-MOMANI
fonte
// 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

Phan Van Linh
fonte
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 #.

Johann
fonte
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

Amir Ziarati
fonte
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"

Taddeo
fonte
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.

Ricky
fonte
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.

Justin Niessner
fonte
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

Coder123
fonte
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.

Yawar
fonte
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>

Sirius Black
fonte
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

Victor Ruiz.
fonte
-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;

    }
}
Dennis
fonte
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
-3

Basta instalar e ativar o plug-in Coffee-Bytes (Eclipse)

acmoune
fonte
Isso não é apenas mencionado em uma resposta anterior , mas você nem mesmo forneceu informações úteis sobre isso.
Xynariz 04/04
-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

Abhishek
fonte
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