如何在Java注释中标记代码的逻辑部分?

Java类通常分为逻辑“块”。 是否有公约来标记这些部分? 理想情况下,主要的IDE将支持它。

我个人使用这个方法:

//// Section name here //// 

不过,有些编辑似乎有这个问题。

作为一个例子,在Objective-C代码中,你可以使用这个方法:

 #pragma mark - #pragma mark Section name here 

这将导致XCode中的菜单如下所示:

替代文字

我个人使用80字符行分隔符,如下所示:

 public class Client { //================================================================================ // Properties //================================================================================ private String name; private boolean checked; //================================================================================ // Constructors //================================================================================ public Client() { } public Client(String name, boolean checked) { this.name = name; this.checked = checked; } //================================================================================ // Accessors //================================================================================ public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } } 

当然,对于这样一个小型的POJO来说,这看起来有点矫枉过正,但相信我,在一些大型项目中,我必须浏览大型源文件,并快速find我感兴趣的方法,这一点非常有用。源代码结构。

在Eclipse中,我创build了一组自定义模板(在Eclipse的“首选项”对话框中的Java – >编辑器 – >模板)来生成这些条,例如。 – sepa(SEParator for Accessors) – sepp(SEParator for Properties) – sepc(SEParator for Constructors) – 等

我还修改了标准的“新类”模板(Eclipse首选项屏幕中的Java – >代码样式 – >代码模板)

此外,还有一个名为Coffee-bytes的旧Eclipse插件,它增强了Eclipse折叠代码部分的方式。 我不知道它是否仍然有效,但我记得可以通过添加特殊注释来定义任意可折叠区域,如// [SECTION]或其他。 它可能仍然在最近的Eclipse版本中工作,所以看看。

对于intellij / android工作室有一个惊人的解决scheme。
从…开始:
//region Description
并结束于:
//endregion

这个快捷方式是在你可以使用Command + Alt + T (Mac)或Ctrl + Alt + T (Windows)打开的菜单中。

如果您需要,您也可以添加自己的线路进行额外的视觉分离。 像任何function一样,该区域可以随意缩放和扩大+/-button。 您还可以使用Command + Alt + PeriodCtrl + Alt + Period )在区域之间导航,

来源 。

例:

 //region Parceler Implementation //--------------------------------------------------------------------------------------- @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(this.die, 0); dest.writeParcelable(this.dieSprite, 0); } private DieVm(Parcel in) { this.die = in.readParcelable(Die.class.getClassLoader()); this.dieSprite = in.readParcelable(Sprite.class.getClassLoader()); } public static final Parcelable.Creator<DieVm> CREATOR = new Parcelable.Creator<DieVm>() { public DieVm createFromParcel(Parcel source) { return new DieVm(source); } public DieVm[] newArray(int size) { return new DieVm[size]; } }; //--------------------------------------------------------------------------------------- //endregion 

Eclipse定义了一个@category javadoc注释 (滚动到标记为“类别支持”的部分),可以在大纲视图中按类别进行过滤。 不完全是你想要的。 我惊讶没有人写了一个Eclipse插件,它提供了一个像你的屏幕截图的视图。

我也喜欢这一点,当我使用xcode。 对于日食,我使用ctrl + o(快速大纲)浏览一个Java类。

在代码中使用不必要的注释/标记来帮助工作可能不是一个好的做法。 我对xcode和java开发一无所知,但是所有主要的IDE支持find没有任何特殊标记(如eclipse)的成员显示了使用大纲视图的方法和成员,可以使用ctrl+O ,Intellij(我更喜欢在Mac上使用更多并有一个社区版)也有相同的大纲概念,并可以使用(Ctrl + F12)快速访问。 所以我的观点是不要在代码中使用任何不必要的标记,因为所有(或至less是好的/理智的)IDE都可以自动完成。

据我所知,没有一个支持将类成员分组在一起的规范。 你可以使用任何你喜欢的评论约定,但有可能不会被任何工具支持。

最好是通过inheritance或聚合将相关成员分成单独的类。 这被认为是一个很好的面向对象的风格

一个现代的IDE允许你用不同的方式查看你的代码,甚至可以重新组织它。 Eclipse甚至允许你在另一个面板上查看你有光标的代码的定义。

任何自动重组你的代码,都会导致这样的标记崩溃。

如果你想分组,那就考虑把属于同一类的东西和不属于不同类的东西放在一起。

如果您可以将您的方法聚类,请专门针对您想在截面中捕获的该概念进行另一课程。 继续,创build文件是免费的。

除了Andrey提供的答案,要使用// region // endregion,我们在主代码段中插入[BigAscii letters] [1]。 当快速滚动时,它确实脱颖而出。 这种方法的一个缺点是,我不能search它,所以你需要添加一个search词,就像我在下面的“横幅”下面。

大段引用

 // _ _____ _____ _ _ // | | | __ \ /\ | __ \ /\ | | | | // | | | | | | / \ | |__) | / \ _ _| |_| |__ // | | | | | |/ /\ \ | ___/ / /\ \| | | | __| '_ \ // | |____| |__| / ____ \| | / ____ \ |_| | |_| | | | // |______|_____/_/ \_\_| /_/ \_\__,_|\__|_| |_| // // Search here with: LDAP Auth 

[1]: http : //patorjk.com/software/taag/#p=display&c=c%2B%2B&f=Big&t=LDAP Auth

对于IntelliJ我喜欢:

  public void ________________INIT__________________() {}; 

漂亮的文件结构!