C #에서 #region에 해당하는 Java


488

Eclipse 에서 코드 접기에 영역을 사용하고 싶습니다 . Java로 어떻게 할 수 있습니까?

C #의 사용법 예 :

#region name
//code
#endregion

@MichaelLaVoie : 답변이 삭제되었습니다. 다른 SE 사이트로 옮길 가능성이 있습니까?
Adam Parkin

1
programmers.stackexchange.com/questions/53086/… 정신적으로 비슷해 보입니다.
Adam Parkin

나는 파티에 늦었다. IKashef에 동의하여 현재 선택된 다른 옵션이 있습니다. Yaqub Ahmad의 대답은 저의 생명을 구했습니다. Intellig IDE를 다운로드 할 필요가 없었습니다. cking24343의 의견에서 언급 한 CoffeeBytes 플러그인을 다운로드했으며 'null n void'의 구성을 적용하고 Luna에서 잘 작동했습니다. 구성을 적용한 후 다시 시작해야합니다
Maximus Decimus

3
시작 //region [Description] 과 끝//endregion
Amir Ziarati

답변:


215

이와 같은 표준 은 없습니다 . Intellij 또는 Eclipse와 같은 일부 IDE는 관련된 코드 유형 (생성자, 가져 오기 등)에 따라 접을 수 있지만 그와 비슷한 것은 없습니다 #region.


30
실제로 이것은 달성 될 수 있습니다. 이 게시물에서 아래로 스크롤하면 "Yaqub Ahmad"에서이 기능을 얻는 방법에 대해 설명합니다. 또한 여기에 기존 일식 환경에 추가하는 방법을 보여주는 링크 ( kosiara87.blogspot.com/2011/12/… )가 있습니다 ... 매우 유용합니다!
cking24343

14
확실한. 그러나 표준 은 없습니다 . 언어 (또는 텍스트) 구성이 아닌 IDE에서 수행됩니다.
Brian Agnew

2
@lKashef- 표준 표준 은 무엇 입니까? 아래에 언급 된 모든 것은 특정 IDE와 관련이 있습니까?
Brian Agnew

4
@BrianAgnew, OP는 표준에 대해 언급하지 않고 코드에서 지역과 같은 블록을 가질 수 있기를 원합니다. 예를 들어 "#region과 같은 것은 없습니다." IDEA에서 // region .. // endregion은 #region과 정확히 동일하게 작동합니다. IDE 자체 또는 플러그인에 의존하기 때문에 처음에는이 작업을 수행하는 표준 방법이 없습니다. Microsoft 배경 지식이있는 개발자는 항상 MS Visual Studio를 "The"IDE로 볼 수 있지만 실제로는 옵션 중 하나 일 뿐이며 다른 IDE가 이러한 기능을 구현하거나 구현하지 않을 수 있습니다.
Mazen Elkashef

4
@BrianAgnew, 나는 다른 사람들의 대답이 당신보다 더 도움이 될 때까지 거의 포기했습니다. 여기에 진지한 느낌이 들지 않습니다. 우리 모두는 우리의 지식을 배우고 공유하기 위해 여기에 있으며 귀하의 답변에 의해 잘못 인도되었다는 사실을 진술하고 있습니다. 아마도 2010 년에는 좋지만 오늘은 아닙니다. 나는 당신이 내 요점을 얻을 바랍니다.
Mazen Elkashef

476

Jet Brains IDEA에는이 기능이 있습니다. 이를 위해 핫키 서라운드를 사용할 수 있습니다 (ctrl + alt + T). 그것은 단지 IDEA 기능입니다.

지역은 다음과 같습니다.

//region Description

Some code

//endregion

3
고마워요! Android Studio에서 완벽하게 작동합니다.
rogcg

2
이 질문은 분명히 Eclipse 솔루션을 요구합니다.
Duncan Jones

5
@ 던컨 (Duncan) 1. 사람들에게 대안이 있다는 것을 잘못 보여주는 것은 없습니다. 2. Intellij의 지역을 검색하여 찾았습니다.
BHuelse

2
Linux
에서이

1
방금 시도해 보았을 때 IntelliJ가 중첩 영역을 지원하는 것처럼 보입니다! 이것이 나쁜 것은 표준이 아닙니다.
Gruber

209

Android Studio를 사용하여 다음을 시도하십시오.

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

주의 : // 지역 다음에 빈 줄 없음 ...

그리고 당신은 얻을 것이다 :


Android Studio가 IntelliJ를 기반으로하므로 모든 답변을 겪고 있었고 이것이 지원되어야합니다. 그래도 지적하는 것이 좋습니다!
serine

5
bummi, 나는 빈 줄과 0.4.2에서 그것을 시도하고 여전히 작동 않았다
세린

2
단지 의견 / 조언 (및 귀하의 질문에 대한 답변은 아닙니다). 코딩 스타일을 사용하는 대신 클래스 복잡성을 숨길 수 있으므로 영역을 피해야한다는 의견이 널리 퍼져 있습니다. 각 클래스가 많은 기능을 담당하는 거대한 클래스 대신 코드를 작은 클래스로 세분화하십시오. 시간이 지남에 따라 코드를보다 쉽게 ​​관리 할 수 ​​있습니다. 자세한 내용은 여기 읽기 : blog.codinghorror.com/the-problem-with-code-folding
다니엘 사이디에게

5
@DanielSaidi 오, 공포! :) 기사의 사람 " 아무것도 볼 수 없습니다!이 클래스의 코드를 찾아 보려면 해당 섹션을 수동으로 확장해야합니다. "... 그래서 그는 키를 누르기에는 너무 게으 르기 때문에 파일의 섹션)에 해당하는 경우이 기능을 사용해서는 안됩니다. 매우 훌륭한 기능입니다. 지금은 내가 사용하는 클래스에서 스레드로부터 안전하다는 것을 확인한 메소드를 하나씩 숨기고 있습니다. 조직화하는 데 실제로 도움이됩니다. 나는 거기에 있다고 생각했지만, 그것은 지불 할 작은 가격입니다 ...
ycomp

4
@DanielSaidi 복잡성을 숨기는 것이 아니라 변수 선언, 게터, 초기화 코드 등과 같은 일상적인 코드를 숨기는 것이 아닙니다. 또한 함수와 클래스에서 발견 된 "복잡한 코드"를 축소하기 위해 #regions가 필요하지 않습니다. 공구를 잘못 사용하는 프로그래머가있는 쇠고기는 "공구가 불량"에 해당하지 않습니다.
user1567453

96

언어와 동일하지 않습니다 ... IDE 기반 ...

예를 들어 넷빈즈에서 :

NetBeans / Creator는 다음 구문을 지원합니다.

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

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


1
비록 언어별로 접히지는 않지만 NetBeans에서 여전히 도움이되었습니다. 정확히 내가 달성하고 싶었던 것. 내 코드가 더 편리하고 체계적으로 구성되기를 바랍니다.
Indigo

이 줄을 자동으로 채울 수있는 바로 가기가 있습니까?
Pini Cheyni

1
@ pini-cheyni-ui.netbeans.org/docs/ui/code_folding/cf_uispec.html 에는 접기에 사용할 수있는 바로 가기가 있습니다.
Kevin LaBranche

@ JadChahine : OP는 Eclipse에 대해 질문했지만 NetBeans에 잘 작동한다는 데 동의합니다. 구문은 약간 어색하지만 복사 붙여 넣기로 쉽게 만들 수 있습니다.
AlainD

50

7
이 정보에 대해 +1 감사합니다. 플러그인 개발자의 원래 웹 사이트는 2012 년에 더 이상 사용할 수 없으므로 설치 및 사용에 대한 짧은 설명이 발견되었습니다 .
k3b

누구든지 intelliJ 대안을 찾았습니까?
philx_x

다운로드 링크가 더 이상 존재하지 않습니다.
derHugo

49

CoffeeScript 코드 접기 플러그인을 사용하여 이클립스에 사용자 정의 코드 접기 기능을 추가 할 수 있습니다.

이는 Eclipse Luna 및 Juno와 함께 작동하도록 테스트되었습니다. 단계는 다음과 같습니다

  1. 여기 에서 플러그인을 다운로드 하십시오

  2. 아카이브 내용 추출

  3. 플러그인 및 기능 폴더의 내용을 Eclipse 설치 디렉토리 내의 동일한 이름의 폴더에 붙여 넣기
  4. 식을 다시 시작
  5. 탐색 Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    여기에 이미지 설명을 입력하십시오

  6. 표시된대로 새 지역을 작성하십시오.

    여기에 이미지 설명을 입력하십시오

  7. Eclipse를 다시 시작하십시오.

  8. 접두어가 지정된 시작 및 끝 식별자로 시작하는 주석으로 작동하는지 확인하십시오.

    여기에 이미지 설명을 입력하십시오

    여기에 이미지 설명을 입력하십시오

블로그 에서 아카이브를 다운로드하고 단계를 찾을 수도 있습니다.


2
이클립스 네온에서 나를 위해 일하지 : 복사 및 붙여 넣기는 아무것도하지 않았다 : 변경된 유일한 것은 시장에서 >> 설치된 플러그인 >> 업데이트였습니다. coffeeScript 플러그인을 업데이트했지만 java >> 편집기 >> 접기에서 "사용할 폴더 선택"옵션을 얻지 못했습니다.
Angelo Oparah

이클립스 산소에서 작동했지만 일식을 다시 시작해야합니다. 나에게 표시된 아이콘은 빨간색 아이콘이므로 구성 → 창 → 환경 설정 → Java → 편집기 → 접기 클릭에서 변경 Advanced 탭 변경하고 아이콘 테마 세트를 Modern
Michieru

38

이것은 언어 기능보다 더 많은 IDE 기능입니다. Netbeans를 사용하면 다음 정의를 사용 하여 고유 한 접기 정의정의 할 수 있습니다 .

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

이 기사에서 언급했듯이 다른 편집기에서도 지원 될 수 있지만 보장 할 수는 없습니다.


Android 스튜디오에서는 블록의 일부를 접을 수 없습니다. 접기 사양이 블록 외부에서 시작하여 블록 내부에서 끝나면 활성화되지 않습니다.
Von Lemongargle 교수

30

가장 빠른 방법 Android Studio(또는IntelliJ IDEA )

  1. highlight the code 당신은 그것을 둘러싸고 싶어
  2. 프레스 ctrl+ alt+를t
  3. 프레스 c==> 다음 설명을 입력
  4. 즐겨

// region <name> 코드 ... // endregion 더 효율적이고 간단합니다! hehe; P
diegodsp

30

AndroidStudio지역 지역
만들기

첫째 , 찾기 (짧은 절단해야하는 경우 정의)에 대한 Surround With메뉴를 여기에 이미지 설명을 입력하십시오

그런 다음 코드를 선택하고 Ctrl+Alt+Semicolon-> choose를 누릅니다.region..endregion...
여기에 이미지 설명을 입력하십시오

지역으로 이동

첫째, 찾을 Custom Folding지름길
여기에 이미지 설명을 입력하십시오 코드, 언론에 어디서나 둘째,Ctrl+Alt+Period('>' on keyboard) 여기에 이미지 설명을 입력하십시오


20

대부분의 게시물과 달리 이것은 IDE가 아닙니다. 언어입니다. #region은 C # 문입니다.


55
가장 많이 게시되는 것은 JAVA에서 이것이 IDE 기능이라는 것입니다.
WhyNotHugo

1
나는 그러한 언어 기능이 없다고 말하는 가장 인기있는 2 가지 답변을 봅니다. -1.
Mohayemin

23
C #에서는 부분적으로 IDE, 부분적으로 언어입니다. 이 언어는 전 처리기 지시문을 지원하지만 전처리 기는이를 무시합니다 (프로세서가 주석을 무시하는 것과 동일). IDE (Visual Studio)는이를 사용하여 코드 접기를 수행합니다.
ADTC

Java는 IDE (Netbeans) 만 접는 코드를 지정하지 않았으며 Netbeans에는 "TODO"와 같은 더 특별한 주석이 있습니다. SW 프로젝트 개발 프로세스를 통해 진행 상황을 추적하는 데 매우 유용합니다
Pini Cheyni

17

나는 C #에서 java로 왔으며 동일한 문제가 있었고 지역에 대한 가장 정확하고 정확한 대안은 다음과 같습니다 (Android Studio에서 작업, intelliJ에 대해 알지 못함).

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

바로 가기는 다음과 같습니다.

1- 코드를 선택하십시오

2- 눌러 ctrl+ alt+t

3- 누르고 c설명을 쓰십시오


AndroidStudio 버전 2.3.1에서는 접 힙니다. 언제 접 히기 시작했는지 모르겠습니다.
MiguelSlv

감사. 안드로이드 스튜디오 3.0 베타 2에서 완벽하게 작동합니다. 호기심으로 Eclipse Oxygen에서 시도했지만 기본적으로 작동하지 않지만 더 이상 검색하지 않았습니다.
Laurent

15

가장 좋은 방법

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

팁 : ";" "endregion"의 끝에


1
이클립스는 코드를 접지 않고 어떤 IDE를 사용하고 있습니까?
Ohad Cohen

그것은 안드로이드 스튜디오 및 IntelliJ IDEA와 함께 작동합니다 (둘 다 JetBrains와 동일한 코드베이스로 만들어

"통합 개발 환경"을위한 IDE 스탠드
Pini Cheyni

12

누군가 관심이 있다면 Eclipse에서 모든 메소드 등을 한 번에 접을 수 있습니다. 일반적으로 중단 점을 삽입 할 때 마우스 오른쪽 버튼을 클릭하고 '접기'> '모두 축소'를 클릭하십시오. 그것은 질문에 대한 대답이 아니라 빠른 코드 접기에 대한 대안을 제공한다는 것을 알고 있습니다.


1
소스 코드 파일을 열 때 Eclipse가 모든 것을 자동 축소하도록 할 수도 있습니다. 환경 설정> Java> 편집기> 접기> "이러한 요소를 처음 접으십시오"(목록에서 모두 확인). 긴 소스 코드 파일에서 특히 필요한 것에 만 집중하는 것이 편리하다는 것을 알았습니다.
ADTC

@ADTC-감사합니다-수백 번이나 파일을 열 때마다 수동으로 수행했습니다.
ToolmakerSteve

당신이 컴퓨터에서 수동으로 아무것도 반복 할 수 있다면 @ToolmakerSteve, 그냥 거기에 있다 를 자동화하는 방법이 될 수 있습니다. = D
ADTC

8
#region

// code

#endregion

실제로 IDE의 이점 만 얻을 수 있습니다. Java를 사용하면 IDE에 설정된 표준이 없으므로 실제로 표준 과 평행 이 없습니다 #region.


3
에 대한 표준이 region있다면 Java IDE 지원하지 않을 것이라고 확신 할 수 있습니까?
Pacerier

@Pacerier가 해당 표준을 지원하는 경우 가능합니다. #region은 표준보다 더 많은 IDE 기능이라고 생각합니다. 이론적으로 Java IDE는이 동작을 구현하여 사실상의 표준으로 만들 수 있습니다.
El Mac

4

다음은 예입니다.

//region regionName
//code
//endregion

Android 스튜디오에서 100 % 작동


왜 당신이 다운 투표를 받았는지 모르겠습니다. 이것은 실제로 구성이 필요없는 Android Studio에서 작동합니다!
maxdelia

2

나는 주석이 달린 코드에 보통 이것을 필요로하므로 시작과 끝에 중괄호를 사용합니다.

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

코드 스 니펫에 사용될 수 있지만 변수 범위를 변경하기 때문에 일부 코드에서 문제가 발생할 수 있습니다.


1

실제로 johann #은 전 처리기 지시문임을 나타내며 기본적으로 IDE에 수행 할 작업을 알려줍니다.

사용하는 경우 #region#endregion코드 최종 코드가 있는지 여부에 관계없이 최종 코드에는 아무런 차이가 없습니다. 아무것도 사용하지 않으면 언어 요소라고 할 수 있습니까?

그 외에도 Java에는 전 처리기 지시문이 없으므로 코드 폴딩 옵션이 // <code-fold> 문과 같이 netbeans에서 ide 단위로 정의됩니다.


1
아무것도 사용하지 않으면 언어 요소라고 할 수 있습니까? -의견은 어떻습니까?!
epeleg

2
언어의 기능이 아니라는 주장을 들었습니다. 그리고이 질문은 "이것이 아무 것도 바뀌지 않는다면 언어 요소라고 부를 수 있습니까?" 말도 안됩니다. 많은 시간 리팩토링은 인간이 코드를 더 쉽게 읽을 수있게 해주 며 코드 기능에 영향을 미치기 위해 아무것도하지 않습니다.
Menefee

1

Mac 및 Android Studio에서 다음 순서를 따릅니다.

  1. 접을 소스 코드를 강조 표시
  2. Alt+ Command+를 누릅니다t
  3. 고르다 <editor-fold>

또한 다른 옵션을 선택할 수 있습니다.

여기에 이미지 설명을 입력하십시오


-1

Eclipse에서 변수 영역 블록을 감싸는 괄호를 접을 수 있습니다. 가장 가까운 것은 다음과 같이하는 것입니다.

public class counter_class 
{ 

    { // Region

        int variable = 0;

    }
}

8
이것은 쓸모가 없습니다. 메서드 내에서 작동하지 않으며 코드를 깨뜨립니다. (개인 변수는 최종 결과를 원한다고 불평합니다. 범위 정의가없는 변수는 내부 괄호 밖에서 액세스 할 수 없습니다!)
ADTC

1
나는이 방법이 마음에 들지 않고 너무 많은 중괄호를 추가합니다. 이것은 혼란스러운 코드로 이어질 수 있습니다 :(
Broken_Window

-3

그냥 intall하고 Coffee-Bytes 플러그인을 활성화하십시오 (Eclipse)


이것은 이전 답변 에서 언급되었을뿐만 아니라 유용한 정보를 제공하지도 않았습니다.
Xynariz

-12

이를 달성하기위한 몇 가지 옵션이 있습니다. 아래 사항을 따르십시오.

1) 매크로 탐색기를 엽니 다.

2) 새 매크로를 만듭니다.

3) 이름을 "OutlineRegions"(또는 원하는대로)로 지정하십시오.

4) "OutlineRegions"를 마우스 오른쪽 버튼으로 클릭하고 (매크로 탐색기에 표시) "편집"옵션을 선택하고 다음 VB 코드를 붙여 넣습니다.

    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) 매크로를 저장하고 편집기를 닫습니다.

6) 이제 매크로에 단축키를 할당 해 봅시다. 도구-> 옵션-> 환경-> 키보드로 이동하여 "다음을 포함하는 명령 표시"텍스트 상자에서 매크로를 검색하십시오 (텍스트 상자에 유형 : 매크로가 있으면 매크로 이름을 제안하고 하나를 선택하십시오).

7) 이제 텍스트 상자에서 "바로 가기 키 누르기"아래에서 원하는 바로 가기를 입력 할 수 있습니다. Ctrl + M + N을 사용합니다.

사용하다:

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

8) 저장된 단축키를 누릅니다

아래 결과를 참조하십시오.

여기에 이미지 설명을 입력하십시오


매크로 탐색기는 어디에 있습니까? Eclipse 4.3.1을 사용하고 있는데 찾을 수 없습니다.
Mohamed El-Nakib

1
이것은 심지어 Java가 아니십니까?
Burak Karakuş

@ CJBS-re : This code seems to be for Visual Basic.NETIDE가 좋습니다 Visual Studio.
Jesse Chisholm

@JesseChisholm-그게 내 요점이었습니다. OP는 VB가 아닌 Java를 원하며 VS가 아닌 Eclipse IDE를 대상으로합니다.
CJBS

1
RIP 답변. 그는 비주얼 스튜디오를 사용하는 경우, 그는 바로 사용할 수도 #region#endregion
PNDA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.