我正在寻找Java中关于访问者的官方命名约定。
我已经看到,例如,JPanel
类弃用size()
方法而不赞成getSize()
。
但在ArrayList
课程中,该方法为size()
。
所以我想知道访问者是否应该被命名为getXXX()
或xXX()
?
答案 0 :(得分:11)
不使用 JavaBeans约定(getters和setter)通常是个坏主意。
它们通过许多框架的反映来使用,特别是 EL ,有时你不能在没有权利的情况下访问你的字段(取决于EL风格)。
因此,您的访问者应始终命名为getXxx()
或isXxx()
和setXxx()
。
size()
是一个“缺陷”的例子,可以惹恼开发人员(见下面的链接)。 Josh Bloch和Neal Gafter的选择使其更具可读性,这使得在某些情况下很难获得(EL)。
但请记住,JavaBeans约定不是Java命名约定。
资源:
关于同一主题:
答案 1 :(得分:3)
使用查询方法,我总是将getXXX
视为提供的内容与计算的内容。 size()
方法返回集合的大小,这是派生值,因此它是有意义的。如果你有getSize()
我的假设是我可以以某种方式设置大小(通过构造函数或setter方法)。
答案 2 :(得分:1)
对于任何试图看起来像JavaBean的东西,它应该是getXXX
或isXXX
。 (我不记得hasXXX是否也适用于布尔属性......不确定。)
以bean的方式处理JPanel
是有意义的 - 对于设计师等 - 而不是ArrayList
。
我个人倾向于使用getXXX表单只是为了保持一致性,但我相信以上是ArrayList
命名所涉及的推理。
答案 3 :(得分:1)
这只是Colin HERBERT答案的形成性标题,在我看来,这已经足够了:
public Type getProperty()
。此外,访问者应始终返回属性值的副本,而不是值本身。public void setProperty(Type value)
组合访问者和 mutator 会为您提供JavaBean属性。 JavaBeans本质上不被认为是不可变的,但是如果你想使它成为不可变的,你应该对 mutator 方法使用以下签名:public YourJavaBean withProperty(Type value)
。请注意,这应始终返回具有复制属性值的全新YourJavaBean
实例。
答案 4 :(得分:0)
在Eclipse中,约定肯定是使用get
模式。自动化工具通过检查和编写get
和set
样式访问器来创建和处理getter。
答案 5 :(得分:0)
我更喜欢get
/ is
/ set
- 约定(特别是对于ValueObjects / DataObjects),不仅因为它是 JavaBeans 规范,而且因为它以下两点。
答案 6 :(得分:0)
根据JavaBeans规范,遵循setXXX和getXXX模式总是更好。名为so的size()方法可能就像查询状态一样。