Java equivalent to #region in C#
我想在Eclipse中使用区域进行代码折叠;这是如何在Java中完成的?
C中的示例用法:
1 2 3
| #region name
//code
#endregion |
- @迈克尔:答案已被删除。有没有可能它被转移到另一个SE站点?
- programmers.stackexchange.com/questions/53086/…在精神上似乎很相似。
- 我参加晚会迟到了。我同意伊卡谢夫的观点,即当前选定的答案还有其他选项。雅库布·艾哈迈德的回答救了我的命。我不需要下载IntelligIDE。我从cking24343的注释中下载了上面提到的coffeebytes插件,应用了"null n void"的配置,并在luna中运行良好。应用配置后需要重新启动
- 从//region [Description]开始,到//endregion结束。
喷气式飞机大脑的想法有这个特点。您可以使用热键环绕(ctrl+alt+t)。这只是创意。
那里的区域如下:
1 2 3 4 5
| //region Description
Some code
//endregion |
- 在新安卓工作室工作!你刚刚救了我一天:)
- 谢谢你!在Android Studio上完美工作。
- 这个问题显然需要Eclipse的解决方案。
- @邓肯1。向人们展示还有其他选择没有错。2。我搜索了Intellij下的区域并找到了它。
- 啊哈,安卓工作室的xml文件怎么样?
- 在Linux上,该热键运行终端
- 刚刚尝试过,看起来Intellij也支持嵌套区域!可惜这不是标准。
- 这在android studio中有效,因为它本质上是intellij,但是热键已经被覆盖,android studio中会生成一个测试用例。
使用Android Studio,尝试以下操作:
1 2 3 4
| //region VARIABLES
private String _sMyVar1 ;
private String _sMyVar2 ;
//endregion |
小心:区域后没有空行…
你会得到:
- 因为android studio是基于intellij的,所以必须支持它。不过,指出这一点是件好事!
- Bummi,我在0.4.2中用一个空白行尝试过,但仍然有效。
- 只是一个评论/建议(决不是你问题的答案)。人们普遍认为应该避免使用区域,因为它们让您隐藏了类的复杂性,而不是处理您的编码风格。与每个类负责很多功能的大型类不同,我们将把代码分解成更小的类。随着时间的推移,它将使您的代码更容易管理。阅读更多:blog.codingsurror.com/the-problem-with-code-folding
- 问题是询问Eclipse解决方案。
- 叹息,它在android stduio 1.2.2的switch语句中工作,但不在其中。
- @丹尼尔塞迪哦,太恐怖了!:)文章"我什么都看不见!我必须手动展开这些部分来浏览这个类中的任何代码。所以,因为他太懒了,没法按下一个键(这会扩展文件中的所有部分),所以不能使用这个特性——这是一个非常棒的特性。现在我正在一个接一个地使用它,隐藏我已经验证的方法在我正在工作的类中是线程安全的,这确实有助于保持组织性。当然,偶尔我想知道我认为在那里的东西在哪里,但这是一个很小的代价…
- 好吧,如果你必须扩展"文件中的所有部分",我还是会说你的文件/类太大了:)但是邓肯是对的,问题是如何做,而不是问是否应该做。
- @Danielsaidi它不是隐藏复杂性,而是隐藏普通代码,比如变量声明、getter、初始化代码等等。还要注意,您不需要区域来折叠函数和类中的"复杂代码"。程序员错误地使用工具并不等于"工具是坏的"。
没有类似的标准。有些IDE(例如intellij或eclipse)可以根据所涉及的代码类型(构造函数、导入等)折叠,但没有什么与#region非常类似。
- 实际上,这是可以实现的。如果你向下滚动这个帖子,"yaqub-ahmad"解释了如何获得这个功能。这里还有一个链接(kosiara87.blogspot.com/2011/12/…)向您展示了如何将它添加到现有的Eclipse环境中…非常有用!
- 当然。但是没有标准。它是在IDES中执行的,而不是使用语言(或文本)构造
- @brianagenew,这个答案很不幸是不正确的,请检查下面的选项吨和更新您的答案!
- @那么,标准等效物是什么呢?下面提到的所有内容都与特定的IDE有关,是吗?
- @Brianagnew,操作系统没有提到任何关于标准的内容,相反,他只想在代码中有类似块的区域。例如,你说"但是没有什么比区域更像。"在思想中,例如//区域。//EndRegion的工作方式与Region完全相同。因为它依赖于IDE本身或插件,所以一开始就没有标准的方法来实现这一点。具有Microsoft背景的开发人员总是将MS Visual Studio视为"IDE",但实际上,它只是其中一个选项,另一个IDE可能或可能不实现此类功能。
- 我会让@pentium10决定是否回答了他的问题
- @我几乎放弃了,直到我看到别人的答案比你的答案更有帮助。说真的,这里没有什么不好的感觉,我们都在这里学习和分享我们的知识,并声明我被你的答案误导了,也许这是一个好的2010年,但不是今天。我希望你明白我的意思。
- stackoverflow.com/a/31099958/1442541
- android studio中有//region my region code//endregion,通过在eclipse中使用此插件:sites.google.com/site/bkosazyckistorage1/…
- 对于像我这样的人,使用Android Studio"西里尔·雅卡尔"的答案正是你想要的!
- 好。。。你说它就像是C语言的一部分。我想不是。VisualStudio只是添加了这个特性,同样可以为Java做其他IDE(
语言中没有等价物…基于IDES…
例如,在NetBeans中:
NetBeans/Creator支持此语法:
1 2 3
| // <editor-fold defaultstate="collapsed" desc="Your Fold Comment">
...
// </editor-fold> |
http://forums.java.net/jive/thread.jspa?苏塞德=1311
- 尽管这不是一个特定于语言的折叠,但在NetBeans中仍然对我有所帮助。正是我想要实现的。只想让我的代码更方便、更有条理。
- 哈哈,有了这个语法,我可能连这个功能都不用了。
- 有什么可以自动填充这行的快捷方式吗?
- @pini cheyni-ui.netbeans.org/docs/ui/code_folding/cf_uispec.html有可供折叠的快捷方式……
- @Jadchahine:OP询问了Eclipse,但同意这对Netbeans很有效。语法有点笨拙,但复制粘贴就足够简单了。
对于Eclipse IDE,Coffeebytes插件可以做到这一点,下载链接就在这里。
编辑:
这里是关于咖啡字节的最新信息。
- +1感谢您提供此信息。由于插件开发人员的原始网站在2012年不再可用,我发现了一个简短的安装和使用说明。
- 有人找到Intellij替代方案吗?
自定义代码折叠功能可以使用coffeescript代码折叠插件添加到Eclipse中。
这是对EclipseLuna和Juno的测试。步骤如下
从这里下载插件
提取存档内容
复制将plugin和features文件夹的内容粘贴到Eclipse安装目录中的同一个命名文件夹中
重新启动Eclipse
导航Window >Preferences >Java >Editor >Folding >Select folding to use: Coffee Bytes Java >General tab >Tick checkboxes in front of User Defined Fold。
创建新区域,如图所示:
重新启动Eclipse。
如果折叠操作带有前缀为指定起始和结束标识符的注释,请尝试
您也可以下载存档文件并在此日志中查找步骤。
- 在EclipseNeon上不工作:复制和粘贴什么也没做:唯一改变的是在marketplace>>installed plugins>>update下。我更新了CopeScript插件,但是我没有选择"选择折叠使用"在Java>编辑器>折叠。
- 它在Eclipse氧气中工作,但是您需要重新启动Eclipse。显示给我的图标是一个红色图标,所以我在配置、窗口、偏好、Java、编辑器、折叠、点击高级标签、改变图标主题集到现代。
这更多的是一个IDE特性,而不是一个语言特性。NetBeans允许您使用以下定义定义自己的折叠定义:
1 2 3
| // <editor-fold defaultstate="collapsed" desc="user-description">
...any code...
// </editor-fold> |
正如本文所指出的,这也可能得到其他编辑的支持,但没有任何保证。
- 这在Android Studio中工作。
- 在Android Studio中,至少不能折叠部分块。如果折叠规格从块外部开始,在块内部结束,则不会激活。
- 是的,它在Android工作室工作,谢谢。
the fastest way in Android Studio (or IntelliJ IDEA)
你想包围它
按OCx1〔1〕+OCx1〔2〕+OCx1〔3〕
按xykbc==>然后输入说明
享受
- //region您的代码…//endregion更高效、更简单!和合
AndroidStudio地区创建区域
首先,为Surround With菜单查找(并在需要时定义快捷方式)
然后,选择代码,按Ctrl+Alt+Semicolon->选择region..endregion...。
走向区域
首先,找到Custom Folding的捷径第二,从代码的任何地方,按Ctrl+Alt+Period('>' on keyboard)。
与大多数人发布的内容相反,这不是一个IDE。它是一种语言。区域是C_声明。
- 大多数发布的是,在Java中,这是IDE特性。
- 我确实看到两个最流行的答案说没有这样的语言功能。- 1。
- 在C中,它部分是IDE,部分是语言。该语言支持预处理器指令,但预处理器只是忽略它们(与处理器忽略注释的方式相同)。IDE(Visual Studio)使用它们进行代码折叠。
- Java没有指定的代码只折叠IDE(NETBeOs),NETBees有更多的特殊评论,如"todo"等。它们对于通过软件项目开发过程跟踪您的进度非常有用。
最好的方法
1 2 3 4 5
| //region DESCRIPTION_REGION
int x = 22;
// Comments
String s ="SomeString";
//endregion; |
提示:将";"放在"结束区域"的末尾
- Eclipse不折叠代码,您在使用什么IDE?
- 这个IDE是什么?
- 它与Android Studio一起工作
- 它与Android Studio和Intellij IDEA(两者都是由JetBrains用相同的代码库制作的)一起工作。
- IDE代表"集成开发环境"
我是从C到Java,有同样的问题,对于区域最好的和精确的选择如下(在Android工作室工作,不知道因特利利):
1 2 3 4 5
| //region [Description]
int a;
int b;
int c;
//endregion |
快捷方式如下:
1-选择代码
2-按ctrl+alt+t。
3-按c并写下您的描述
- 在AndroidStudio 2.3.1版中,它可以折叠。我不知道什么时候开始折叠。
- 谢谢。在android studio 3.0 beta 2中完美工作。出于好奇,我在Eclipse氧气中尝试过,默认情况下它不工作,但没有进一步搜索。
- 对于Eclipse,有一个插件:code.google.com/archive/p/coffee-bytes
如果有人感兴趣,在Eclipse中,您可以一次性折叠所有方法等,当您通常插入一个断点时,只需右键单击,单击"折叠">"全部折叠"。它知道这不是问题的答案,只是提供了快速代码折叠的替代方案。
- 您还可以让Eclipse在打开源代码文件时自动折叠所有内容。首选项> java>编辑器>折叠>"首先折叠这些元素"(检查列表中的所有)。我发现只关注我需要的东西很方便,特别是在长源代码文件中。
- @ADTC-谢谢-我每次打开一个文件都要手动操作数百次-再也不要了!!
- @toolmakersteve如果您可以在计算机上手动执行任何重复的操作,那么就必须有一种方法来实现自动化。= D
1 2 3 4 5
| #region
// code
#endregion |
只会让你在IDE中受益。使用Java,井手中没有设置标准,所以实际上没有与EDOCX1 0并行的标准。
- 如果有一个EDCOX1(0)的标准,那么我们可以确信JavaIDE会支持它,不是吗?
- @如果他们支持这个标准,是的。我认为区域更像是一个IDE特性,而不是一个标准。理论上,Java IDE可以实现这种行为并使之成为阿德的事实标准。
我通常需要这个用于注释代码,所以在代码的开头和结尾使用花括号。
1 2 3 4 5 6
| {
// Code
// Code
// Code
// Code
} |
它可以用于代码段,但可以在某些代码中创建问题,因为它会更改变量的范围。
在Mac和Android Studio上,按以下顺序操作:
突出显示要折叠的源代码
按alt+commandakbd+t
选择。
还可以选择其他选项:
实际上,johann,#表示它是一个预处理器指令,这基本上意味着它告诉IDE要做什么。
在代码中使用#region和#endregion的情况下,无论最终代码是否存在,都不会有任何区别。如果使用它什么都不改变,你真的能称它为语言元素吗?
除此之外,Java还没有预处理器指令,这意味着代码折叠的选项是在IDE基础上定义的,例如在NETBeaS中,用//<代码折叠>语句。
- 如果使用它什么都不改变,你真的能称它为语言元素吗?-评论怎么样?!
- 我以前听过这个论点,它不是语言的函数。这个问题"如果使用它什么都不改变,你真的能称它为语言元素吗?"太荒谬了。很多时候,重构使代码更容易被人阅读,并且(希望)不会影响代码的功能。
在Eclipse中,可以折叠包装变量区域块的括号。最接近的是这样做:
1 2 3 4 5 6 7 8 9
| public class counter_class
{
{ // Region
int variable = 0;
}
} |
- 这是无用的。它不能在方法内部工作,而且它会破坏代码!(私有变量会抱怨他们想成为最终变量。没有范围定义的变量将无法在内括号外访问!)
- 我不喜欢这个方法,加了太多大括号。这可能导致代码混淆:(
只需输入并启用咖啡字节插件(Eclipse)
- 这不仅在前面的回答中提到,而且你甚至没有提供任何有用的信息。
有一些实现相同的选择,请遵循以下几点。
1)打开宏资源管理器:
2)创建新宏:
3)将其命名为"OutlineRegions"(或任何您想要的名称)。
4)右键单击"大纲区域"(显示在宏资源管理器上),选择"编辑"选项并将以下VB代码粘贴到其中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| 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)现在让我们为宏指定快捷方式。转到工具->选项->环境->键盘,在"显示包含命令"文本框中搜索宏(在文本框中键入:macro,它将建议宏名,选择您的宏名。)
7)现在,在"按下快捷键"下的文本框中,您可以输入所需的快捷键。我使用CTRL+M+N。
用途:
1 2 3 4 5 6 7 8
| return
{
//Properties
//#region
Name:null,
Address :null
//#endregion
} |
8)按保存的快捷键
结果如下:
- 宏资源管理器在哪里?我正在使用Eclipse 4.3.1,找不到它。
- 这甚至不是Java?
- 此代码似乎适用于Visual Basic.NET
- @cjbs-re:This code seems to be for Visual Basic.NET,表示ide是Visual Studio。
- @Jessechisholm——这就是我的观点。OP需要Java,而不是VB,它的目标是Eclipse IDE,而不是VS。
- 这不是一个爪哇PGM…
- 撕开答案。如果他使用的是Visual Studio,他就可以使用#region和#endregion。