Java中与C#中#region相当的功能是什么?

547

我想在Java的Eclipse中使用代码折叠的区域; 如何实现?

C#中的一个示例用法:

#region name
//code
#endregion

2
看起来 http://programmers.stackexchange.com/questions/53086/are-regions-an-antipattern-or-code-smell/ 在精神上相似。 - Adam Parkin
我加入晚了。我同意IKashef的观点,认为当前选择的答案还有其他选项。Yaqub Ahmad的答案救了我的命。我不需要下载Intellig IDE。我从cking24343的评论中下载了提到的CoffeeBytes插件,应用了“null n void”的配置,在Luna中运行良好。应用配置后需要重新启动。 - Maximus Decimus
3
//region [Description] 这是一段关于编程的内容,需要进行翻译。编程是一种创造性的工作,它需要深入的思考和逻辑推理能力。在编程中,我们使用各种编程语言来实现不同的功能,例如Java、Python、C++等。同时,我们还需要掌握各种开发工具和技术,如Git、Docker、RESTful API等。编程是一个不断学习和进步的过程,只有不断地学习和实践,才能成为一名优秀的程序员。 //endregion - Amir Ziarati
稍后相关的内容并不特指Java,但与Eclipse折叠功能有关:https://dev59.com/mGYr5IYBdhLWcg3wpbyQ - Ben
24个回答

543
Jet Brains IDEA有这个功能。你可以使用热键(ctrl + alt + T)来包裹代码。这是IDEA的一个特性。
这里的区域看起来像这样:
//region Description

Some code

//endregion

4
谢谢!在Android Studio上完美运行。 - rogcg
2
问题明确要求解决Eclipse的方案。 - Duncan Jones
8
  1. 向人们展示替代方案没有错。
  2. 我在谷歌上搜索了Intellij下的地区并找到了它。
- BHuelse
4
在Linux系统中,该热键可以运行终端。 - user1209216
1
在Mac上,选择您想要的区域块,然后快捷键是:option + command + T - Hurricane
显示剩余3条评论

228

没有类似的标准等效物。例如,Intellij或Eclipse等IDE可以根据涉及代码类型(构造函数、导入等)来折叠,但是没有类似于#region的东西。


32
实际上,这是可以实现的。如果您在此帖子中向下滚动,“Yaqub Ahmad”解释了如何获得此功能。此外,这里有一个链接(http://kosiara87.blogspot.com/2011/12/how-to-install-coffee-bytes-plugin-in.html),向您展示如何将其添加到您现有的Eclipse环境中...非常有用! - cking24343
14
可以。但是这里并没有“标准”的做法。它通常在集成开发环境中完成,而不是通过语言(或文本)结构来实现。 - Brian Agnew
2
@lKashef - 那么标准的等价物是什么?下面提到的所有内容都与特定的IDE有关,不是吗? - Brian Agnew
6
@BrianAgnew,楼主并没有提到标准,他只是想在代码中使用类似于“区域”的块。例如,您说:“但没有像#region这样的东西。”在IDEA中,//region..//endregion的功能与#region完全相同。首先,根本不存在统一的方法,因为它取决于IDE本身或插件。有Microsoft背景的开发人员始终将MS Visual Studio视为“主” IDE,但实际上它只是一个选项,另一个IDE可能实现或不实现此类功能。 - Mazen Elkashef
5
@BrianAgnew,我差点放弃,直到看到其他人的答案,他们的答案比你的更有帮助。我没有恶意,我们都在这里学习和分享知识,我只是想说,你的答案误导了我,也许在2010年它还不错,但今天不行了。我希望你能理解我的意思。 - Mazen Elkashef
显示剩余7条评论

216

使用Android Studio,尝试以下操作:

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

请注意://region ...之后不要留空行。

这样你会得到:


我正在查看所有答案,发现由于Android Studio基于IntelliJ,因此必须支持。不过指出这一点是个好主意! - serine
5
Bummi,我在0.4.2版本中尝试了一下,加入了一个空行,仍然可以正常工作。 - serine
2
这只是一条评论/建议(绝不是对你问题的回答)。普遍认为应该避免使用区域,因为它们让你隐藏类的复杂性,而不是改善你的编码风格。与其使用每个类都负责大量功能的庞大类,不如将代码分解成较小的类。这样做可以使你的代码随着时间的推移更易于管理。在此阅读更多信息:http://blog.codinghorror.com/the-problem-with-code-folding/ - Daniel Saidi
6
@DanielSaidi 噢,太可怕了! :) 文章中的那个人说“我什么也看不到!我必须手动展开这些部分才能浏览此类中的任何代码。”...所以因为他懒得按键(展开文件中的所有部分),这个功能就不能使用——这是一个超级美妙的功能。现在我正在用它逐个隐藏我已经验证为线程安全的方法,在我工作的类中,这确实有助于保持组织结构。当然,偶尔我会想知道我认为在那里的某些东西在哪里,但这是一个小代价... - ycomp
4
@DanielSaidi 这与隐藏复杂性无关,而是隐藏诸如变量声明、getter、初始化代码等乏味的代码。此外,请注意,您不需要使用#regions来折叠函数和类中找到的“复杂代码”。程序员错误使用工具并不意味着“工具不好”。 - user1567453
显示剩余3条评论

101

2
尽管这不是针对特定语言的折叠,但它仍然帮助我在NetBeans中编写代码。正是我想要实现的效果。我只是希望我的代码更方便和有组织。 - Indigo
有没有快捷方式可以自动填充这一行? - Pini Cheyni
1
@pini-cheyni - https://ui.netbeans.org/docs/ui/code_folding/cf_uispec.html 中提供了折叠的快捷方式... - Kevin LaBranche
@JadChahine:OP 问的是关于 Eclipse 的,但同意这对 NetBeans 也很有效。语法有点笨拙,但复制粘贴使其变得足够容易。 - AlainD

53

使用CoffeeScript代码折叠插件,可以为Eclipse添加自定义代码折叠功能。

此方法经过了Luna和Juno版本的Eclipse测试。以下是步骤:

  1. 这里下载插件。

  2. 提取存档内容。

  3. 将插件和features文件夹中的内容复制并粘贴到Eclipse安装目录中同名的文件夹中。
  4. 重启Eclipse。

  5. 导航 Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold

    enter image description here

  6. 按如下所示创建新区域:

    enter image description here

  7. 重新启动Eclipse。

  8. 尝试使用指定的起始和结束标识符前缀的注释进行折叠操作。

    enter image description here

    enter image description here

您也可以从此博客下载存档并查找步骤。


2
在 Eclipse Neon 上对我无效:复制和粘贴没有任何作用:唯一变化的是在 Marketplace >> Installed Plugins >> Update 下方。我更新了 CoffeeScript 插件,但在 Java >> Editor >> Folding 下没有得到“选择折叠使用”的选项。 - Angelo Oparah
它在Eclipse Oxygen中运行正常,但是您需要重新启动Eclipse。显示给我的图标是红色的,所以我在配置中进行了更改, 窗口→首选项→Java→编辑器→折叠 点击高级选项卡,将图标主题集更改为现代 - Michieru

51

7
谢谢提供这个信息。由于插件开发者的原始网站在2012年已经无法访问,我找到了一个简短的安装和使用说明(链接为http://kosiara87.blogspot.com/2011/12/how-to-install-coffee-bytes-plugin-in.html)。 - k3b
有人找到了IntelliJ的替代品吗? - philx_x
下载链接已经不存在。 - derHugo

38

这更像是一个IDE功能而不是语言功能。Netbeans允许您使用以下定义来定义自己的代码折叠规则

// <editor-fold defaultstate="collapsed" desc="user-description">
  ...any code...
// </editor-fold>
如文章所述,其他编辑器可能也支持此功能,但不能保证。

在Android Studio中,至少目前无法折叠代码块的一部分。如果折叠规范从代码块外开始,并在代码块内结束,则不会生效。 - Prof Von Lemongargle

32
在Android Studio(或IntelliJ IDEA)中最快的方法:
  1. 突出显示您想要包围的代码
  2. 按下 ctrl + alt + t
  3. 按下 c ==> 然后输入说明
  4. 享受

// 区域 <名称> 你的代码... // 结束区域更高效和简单!嘿嘿 ;P - diegodsp

30

AndroidStudio 区域
创建区域

首先,找到(并定义快捷键,如果需要)Surround With 菜单 enter image description here

然后,选择代码,按下 Ctrl+Alt+Semicolon -> 选择 region..endregion...
enter image description here

转到区域

首先,找到 Custom Folding 快捷键
enter image description here 其次,在代码中的任何位置,按下 Ctrl+Alt+Period('>' on keyboard) enter image description here


19

与大多数人发布的内容相反,这不是一个 IDE 问题。这是一种语言问题。#region 是 C# 语句。


55
大多数人发布的内容是指在JAVA中这是一个IDE功能。 - WhyNotHugo
1
我确实看到了两个最流行的答案,它们都说没有这样的语言特性。-1。 - Mohayemin
23
在C#中,它既有IDE的一部分,也有语言的一部分。该语言支持预处理器指令,但预处理器会简单地忽略它们(就像处理器会忽略注释一样)。IDE(Visual Studio)使用它们来进行代码折叠。 - ADTC
Java没有指定的代码折叠,只有IDE(Netbeans)有。Netbeans有更多特殊的注释,如“TODO”等等。它们非常有用,可以跟踪软件项目开发过程中的进展。 - Pini Cheyni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接