Java:访问者的命名约定

时间:2010-09-13 06:16:24

标签: java naming-conventions

我正在寻找Java中关于访问者的官方命名约定。

我已经看到,例如,JPanel类弃用size()方法而不赞成getSize()

但在ArrayList课程中,该方法为size()

所以我想知道访问者是否应该被命名为getXXX()xXX()

7 个答案:

答案 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的东西,它应该是getXXXisXXX。 (我不记得hasXXX是否也适用于布尔属性......不确定。)

以bean的方式处理JPanel是有意义的 - 对于设计师等 - 而不是ArrayList

我个人倾向于使用getXXX表单只是为了保持一致性,但我相信以上是ArrayList命名所涉及的推理。

答案 3 :(得分:1)

这只是Colin HERBERT答案的形成性标题,在我看来,这已经足够了:

  • 访问者方法签名应始终如public Type getProperty()。此外,访问者应始终返回属性值的副本,而不是值本身。
  • Mutator 方法签名应始终如public void setProperty(Type value)

组合访问者 mutator 会为您提供JavaBean属性。 JavaBeans本质上不被认为是不可变的,但是如果你想使它成为不可变的,你应该对 mutator 方法使用以下签名:public YourJavaBean withProperty(Type value)。请注意,这应始终返回具有复制属性值的全新YourJavaBean实例。

答案 4 :(得分:0)

在Eclipse中,约定肯定是使用get模式。自动化工具通过检查和编写getset样式访问器来创建和处理getter。

答案 5 :(得分:0)

我更喜欢get / is / set - 约定(特别是对于ValueObjects / DataObjects),不仅因为它是 JavaBeans 规范,而且因为它以下两点。

  1. 方法的明确前缀从“逻辑”方法中分离与属性相关的方法。
  2. 您可以使用JSP和其他假设此命名的框架开箱即用。

答案 6 :(得分:0)

根据JavaBeans规范,遵循setXXX和getXXX模式总是更好。名为so的size()方法可能就像查询状态一样。