如果我有以下私人会员:
private int xIndex;
我应该如何命名我的getter / setter:
getXindex()
setXindex(int value)
或
getxIndex()
setxIndex(int value)
编辑:或
getXIndex()
setXIndex(int value);
答案 0 :(得分:33)
正确的答案是
getxIndex()
setxIndex(int value)
如果您希望将它们用作属性{strong> 8.8:JavaBeans API specification的推断名称的大写 (例如通过$ {object访问它们) JSP中的.xIndex}。
答案 1 :(得分:6)
根据JavaBeans API specification from 1997 它应该像Thomas Einwaller所描述的那样。
private int xIndex;
public int getxIndex() { return xIndex; }
public void setxIndex(int xIndex) { this.xIndex = xIndex; }
这很不幸, getx 和 setx 都不是单词,因为极少数情况下IntelliJ生成的代码也是
IntelliJ收到警告。因此,虽然这符合JavaBeans规范,但它违反了惯例
naming a method。
在极少数情况下,这将形成一个单词或首字母缩略词,它将是消息性的,例如方法setiMessage
可能与SETI无关。
使用the only valid measurement of code quality(每分钟WTF),
我评估这是错误的代码。
这一切都归结为JavaBeans规范的这句话:
但是为了支持偶尔使用所有大写名称,我们检查名称的前两个字符是否为 大写,如果是这样,请不要管它。
对我来说,所指的所有大写名称究竟是什么样的用法都不清楚。根据,字段名称应该是 convention,骆驼套。它似乎 对我来说,我们生成非常规的方法名称,以支持由a决定的非常规字段名称 20岁以上的文件。
还应该注意的是,即使它似乎是对工具中JavaBeans规范的压倒性支持,
它不是专门使用的。例如。在上面的例子中,Kotlin不会将xIndex
识别为属性。相反,
Kotlin属性var xIndex = 0
将生成Java方法getXIndex
和setXIndex
。这似乎是一个错误
根据JetBrains的支持,但我没有看到如何在不做出突破性改变的情况下解决这个问题。
一些支持JavaBeans规范的工具并非总能如此,例如Jackson 并且Swagger Code Generator已经修补以符合它。 即使IntelliJ根据JavaBeans规范生成访问器,example 在文档中与它不同。可能是因为人们不了解标准,自然更喜欢 常规方法命名约定。
那么我们何时应该遵循JavaBeans规范?当属性名称应该由访问者通过工具来推断时
依靠这个标准,那么我们可能想要使用它。例如,Jackson将依赖
除非我们使用注释,否则通过xIndex
和getxIndex
方法访问属性setxIndex
。
我们何时应该避免使用此标准?根据我的建议:当人们阅读和理解代码时。 因为当命名方法具有杀戮性时,不要使用适当的驼峰套管。
如果我按照自己的方式使用,我们会使用常规命名约定,即getXIndex
和setXIndex
。但是,鉴于国家
事情,我看到的最好的解决方案是由@vaxquis建议的:
为您的字段命名" indexX"或者其他什么,你的问题就解决了......不要过于复杂 - 即使是setxIndex 对于Beans来说是正确的方法,使用名为setxIndex的方法会增加代码的WTF因子而不会给你 任何回报。
根据规范本身,有关JavaBeans规范的任何注释都应发送给 java-beans@java.sun.com。
答案 2 :(得分:4)
应该是:
getXIndex()
setXIndex(final int xIndex)
答案 3 :(得分:1)
方法应该是动词,混合大小写,首字母小写,每个内部单词的首字母大写。
答案 4 :(得分:0)
你应该使用java.beans包中的Introspector.decapitalize,因为它符合java规则你没有问题。
答案 5 :(得分:0)
Eclipse ide自动生成setter和getter:
getxIndex()
setxIndex(int value)
这是根据java beans API规范。
答案 6 :(得分:0)
正确答案是:
getXIndex();
setXIndex(int value);
JAVA SE8 Oracle Certification Associate的屏幕截图: enter image description here
答案 7 :(得分:-2)
我认为getXindex()
是最好的方法。 getter应以'get'开头,后跟成员名称,首字母大写。我听说过最新的公约,说我们应该一个接一个地避免多个大写字母。例如getHTMLtooltip
是错误的。它应该是getHtmlTooltip
。你也应该尝试让你的所有成员final
,并且不需要setter,因为这个类是不可变的;)