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

Fre*_*rik 90 java comments

Java类通常分为逻辑"块".是否有标记这些部分的约定?理想情况下,它将受到主要IDE的支持.

我个人使用这种方法:

//// Section name here ////
Run Code Online (Sandbox Code Playgroud)

但是,一些编辑似乎对此有疑问.

例如,在Objective-C代码中,您可以使用此方法:

#pragma mark -
#pragma mark Section name here
Run Code Online (Sandbox Code Playgroud)

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

替代文字

And*_*rov 133

对于intellij/android studio,有一个惊人的解决方案.
从以下开始:
//region Description
并以:结束:
//endregion

它的快捷方式是您可以使用Command+ Alt+ T(Mac)或Ctrl+ Alt+ T(Windows)打开的菜单

如果需要,您还可以添加自己的行以进行额外的视觉分离.可以使用+/-按钮随意收缩和扩展该区域,就像任何功能一样.您还可以使用Command+ Alt+ Period(Ctrl+ 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
Run Code Online (Sandbox Code Playgroud)

  • 我没有看到任何方式在结构视图中显示,所以我仍然使用假空成员(以及禁止未使用的警告). (2认同)

Oli*_*ier 64

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

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

当然,对于这么小的POJO来说这看起来有点过分,但是相信我,它在一些大型项目中非常有用,我必须浏览大型源文件并快速找到我感兴趣的方法.它也有助于理解源代码结构.

在Eclipse中,我创建了一组自定义模板(Java - >编辑器 - > Eclipse的首选项对话框中的模板),用于生成这些条,例如. - sepa(访问者的SEParator) - sepp(属性的SEParator) - sepc(构造函数的SEParator) - 等

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

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


bas*_*ero 14

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


kuk*_*das 6

当我使用xcode时,我也喜欢它.对于eclipse,我使用ctrl + o(快速大纲)来浏览Java类.


Tej*_*eni 6

在代码中使用不必要的注释/标记来帮助工作可能不是一个好习惯.我对xcode和java开发一点都不了解,但是所有主要的IDE支持找到没有像eclipse这样的特殊标记的成员使用大纲视图显示方法和成员,可以使用ctrl+OIntellij 触发(我更喜欢在mac上使用更多并且有一个社区版也具有相同的轮廓概念,可以使用(ctrl + f12)快速访问.所以我的观点是不要在代码中使用任何不必要的标记,因为所有(或至少好/理智)的IDE都可以自动完成.

  • 当然,但将方法分组为逻辑和标记部分可以帮助对可能是平面的方法列表强加视觉顺序.有时候你并不确切地知道你想要哪种方法,并且很高兴同时接受相关的方法,并且知道你正在看到相关代码的完整范围. (15认同)
  • 同意,部分标记只会增加视觉混乱.你的班级应该足够专注,使这些事情无关紧要. (2认同)

sup*_*org 5

我会使用javadoc;或使用以下作为简单的“分隔符”(单行或 3 行):

/** RecyclerOnItemClickListener */

/** 
 * RecyclerOnItemClickListener
 */
Run Code Online (Sandbox Code Playgroud)

因此,在 IDE 中,它以与不显眼的灰色注释不同的颜色出现。