有没有一种方法可以在Java/Eclipse中对方法进行分组?

20

我希望能够将相似的方法分组,并使它们在Eclipse的大纲视图中显示。这样可以更轻松地浏览大量的代码,更容易找到需要的方法。在Objective-C中有一个pragma mark命令,你可以设置。

Java/Eclipse有类似的功能吗?


你知道 Ctrl-O 命令允许在输入回车之前输入所需内容的第一部分吗? - Thorbjørn Ravn Andersen
6个回答

16
我使用Coffee Bytes插件进行代码折叠,具体配置是为了折叠具有开始和结束标记的代码。
虽然该插件无法从Google Code页面下载,但已经重新编译以针对Eclipse 3.5,并在其他地方提供;该版本似乎也适用于Eclipse 3.6和3.7。它还可以在Yoxos市场中获得。
我使用以下符号来分组属性的getter和setter以及属性声明,尽管相同的符号可以扩展为您的使用。
// {{ Id
private String id;

public String getId() {
    return id;
}

public void setId(final String id) {
    this.id = id;
}
// }}

需要配置相同的偏好设置,可以通过Windows > Preferences > Java > Editor > Folding中可用的代码折叠部分进行。记得选择Coffee Bytes Java Folding,并启用对用户定义区域的支持。

尽管分组/折叠的支持仅限于编辑器,但折叠内方法的自然顺序可以保留在大纲视图中。恐怕我不知道除了这个插件之外还有其他的分组能力。


2
请查看http://kosiara87.blogspot.com/2011/12/how-to-install-coffee-bytes-plugin-in.html,以获取适用于Eclipse 3.7(Indigo)的版本。 - The Nail

5

我非常怀念Smalltalk时代的技术。

最好的方式是在代码本身添加注释来表示这些类别。然后,您需要创建一个使用这些注释的专门的大纲视图。听起来像是一个不错的Google Summer of Code项目。


我也是。我认为代码组织是使Smalltalk-80如此高效的因素之一。 - DangerMouse

4
为了帮助Vineet Reynolds的回答,我也想提供以下内容:

USAGE:

in User Defined Regions tab use e.g.:

Start identifier: region    
End identifier: endregion

In code:

//region SomeName
your code
//endregion SomeName

Installation instructions:

  1. Install plugin
  2. Unpack the downloaded file eclipse-folding-plugin.tar.gz
  3. Copy the contents of the:
  4. features folder => eclipse features folder
  5. plugins folder => eclipse plugins folder
  6. Configure plugin in Eclipse:
  7. Select "Windows->Preferences"
  8. Select "Java->Editor->Folding"
  9. Check the "Enable folding" option
  10. Select "Coffee Bytes Java Folding" in the "Select folding to use:" option
  11. Check "User Defined Regions" in the "General Fold Setting:" option

该链接来源:http://kosiara87.blogspot.com/2011/12/how-to-install-coffee-bytes-plugin-in.html


2

关于您最初的问题,我认为在Java/Eclipse中不可能实现。

然而,如果您有一组相似的方法需要与同一类中的另一组方法区分开来,为什么不创建一个新类来包含这组相似的方法呢?


我的意思是类内的方法。有时候一个类可能会有很多个方法。 - Sheehan Alam
这听起来像是“提取类”重构。http://www.refactoring.com/catalog/extractClass.html 是我能快速找到的最佳结果,但是在谷歌上搜索“提取类”,你肯定会找到更多相关信息。 - Tyler
7
许多情况下,并不意味着它应该被重构掉。例如,获取器/设置器是一个类别,事件处理、操作等也是如此。 - zvikico

1

如果您是指按名称分组,请在“大纲视图”上单击“排序”按钮。

此外,视图中还有一些筛选器,可用于“隐藏静态内容”、“隐藏非公共内容”...


1
我刚看到这个,想指出一下,虽然这不完全符合你最初的陈述,但你可以在每个方法的文档块中添加一个@category指令,然后过滤只显示你想要查看的方法类别。我曾经使用过这种方法,只查看我感兴趣的那些方法组。

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