如果我有以下私人成员:

private int xIndex;

我应该如何命名我的Getter/Setter:

getXindex()
setXindex(int value)

或者

getxIndex()
setxIndex(int value)

编辑:或

getXIndex()
setXIndex(int value);

?

有帮助吗?

解决方案

正确的答案是

getxIndex()
setxIndex(int value)

如果您希望它们根据部分用作属性 8.8:推断名称的资本化Javabeans API规范 (例如,通过$ {object.xindex}在JSP中访问它们。

其他提示

依据 Javabeans API规格1997年正如托马斯·埃恩沃勒(Thomas Einwaller)所描述的那样。

private int xIndex;
public int getxIndex() { return xIndex; }
public void setxIndex(int xIndex) { this.xIndex = xIndex; }

这是不幸的, getxsetx 不是言语,为罕见的情况而言,是由Intellij生成的代码也会受到Intellij的警告。因此,尽管这符合Javabeans规格,但它违反了公约命名方法。在极少数情况下,当这会形成单词或缩写时,它将是虚假的,例如该方法setiMessage 很可能与 seti。使用 代码质量的唯一有效测量 (每分钟WTF),我评估 这是不良代码.

这一切都取决于Javabeans规范的这句话:

但是,为了支持偶尔使用所有上案例名称,我们检查名称的前两个字符是否既是高层案例又是一个单独的。

我尚不清楚我所指的所有上案例名称的用途尚不清楚。字段名称应根据惯例, ,是骆驼壳。在我看来,我们生成了非常规方法名称,以支持20岁以上文件决定的非常规的字段名称。

还应注意的是,即使它似乎是对工具中Javabeans规范的压倒性支持,但并非仅使用。例如。科特林不会认识 xIndex 作为上述示例中的属性。相反,Kotlin属性 var xIndex = 0 将导致Java方法 getXIndexsetXIndex. 。根据喷气桥的支持,这似乎是一个错误,但是我看不到它们如何解决这个问题而不进行破坏。

一些支持Javabeans规范的工具并非总是如此,例如 杰克逊Swagger代码生成器 已修补以符合它。即使Intellij根据Javabeans规范生成登录器, 例子在文档中与之不同。可能是因为人们不了解标准,并且自然更喜欢正常方法命名约定。

那么,我们什么时候应该遵循Javabeans规格? 当属性名称应由依赖此标准的工具推断出属性名称时,我们可能需要使用它。例如, 杰克逊 将依靠财产 xIndex 被访问 getxIndexsetxIndex 除非我们使用注释,否则方法。

我们什么时候应该避免此标准? 根据我的建议:当人类应阅读和理解代码时。因为当命名方法是虚假信息时,不使用适当的骆驼壳。

如果我能以自己的方式采用它,我们将使用普通的命名约定,即 getXIndexsetXIndex. 。但是,鉴于事物的状态,我看到的最好的解决方案是@vaxquis建议的:

将您的字段命名为“ indexx”或其他任何内容,您的问题已经解决...不要过度复杂化 - 即使setxIndex是bean的正确方法,使用命名setxIndex的方法会增加代码的WTF因子,而无需给您任何东西。 。

关于Javabeans规范的任何评论,应根据规范本身发送到Java-beans@java.sun.com。

应该:

getXIndex()
setXIndex(final int xIndex)

方法应该是动词,在混合情况下与第一个字母小写,每个内部单词都大写的第一个字母。

您应该使用Introspector.decatietize从包装java.beans中使用,并且您没有问题,因为它符合Java规则。

Eclipse IDE会自动生成设定器和Getters:

getxIndex()
setxIndex(int value)

根据Java Beans API规范。

我认为 getXindex() 是最好的方法。 Getter应该从“ Get”开始,其次是会员名称,其首字母大写。我还听说过的最新惯例,说我们应该避开多个大写字母。例如 getHTMLtooltip 是错的。它应该是 getHtmlTooltip 反而。您也应该尝试使所有成员 final 而且不需要设置器,因为班级将是不可变的;)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top