代码之家  ›  专栏  ›  技术社区  ›  Jérôme

Java:访问器的命名约定

  •  5
  • Jérôme  · 技术社区  · 14 年前

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

    例如,我见过 JPanel 类已弃用 size() 有利于 getSize() .

    ArrayList 类,方法是 大小() .

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

    7 回复  |  直到 14 年前
        1
  •  11
  •   Community    7 年前

    使用 JavaBeans公约
    许多框架通过反射使用它们,特别是在 有时如果没有权限获取程序,您就无法访问字段(取决于EL的风格)。

    所以你的访问者应该总是被命名为 getXxx() isXxx() setXxx() .

    size() 在集合框架中有一个“缺陷”的例子,它会惹恼开发人员(参见下面的链接)。乔什·布洛赫和尼尔·加夫特选择让它更具可读性,这使得在某些上下文中很难获得(EL)。

    但是记住JavaBeans约定不是Java命名约定。


    资源:

    关于同一主题:

        2
  •  3
  •   Javid Jamae    14 年前

    getXXX 作为提供的东西和计算出来的东西。这个 size() 方法返回作为派生值的集合的大小,因此它是有意义的。如果你有 getSize() 我的假设是我可以以某种方式设置大小(通过构造函数或setter方法)。

        3
  •  1
  •   Jon Skeet    14 年前

    对于任何试图看起来像JavaBean的东西,它应该是 getXXX isXXX

    治疗癌症是有道理的 JPanel 以一种豆子的方式-对于设计师等-但不是 ArrayList .

    我个人认为 倾向 阵列列表 的命名。

        4
  •  1
  •   Esko    14 年前

    这只是对科林·赫伯特的答案的一个形成性补充,在我看来,这已经足够了:

    • 存取器 方法签名应该始终像 public Type getProperty() 复制
    • 突变子 public void setProperty(Type value)

    存取器 突变子 突变子 public YourJavaBean withProperty(Type value) . 注意,这应该总是返回一个全新的 YourJavaBean

        5
  •  0
  •   Max Leske Thomas Shelby    14 年前

    在Eclipse中,约定肯定是使用 get 图案。automisation工具通过检查和写入来创建和处理getter 得到 set 样式访问器。

        6
  •  0
  •   Johannes Wachter    14 年前

    我更喜欢 get / is / set -约定(特别是对于ValueObjects/DataObjects)不仅仅因为它是 爪哇豆 但由于以下两点。

    1. 方法的清晰前缀将属性相关方法与“逻辑”方法分开。
        7
  •  0
  •   Seshagiri    12 年前

    按照JavaBeans规范遵循setXXX和getXXX模式总是更好的。名为so的size()方法可能只是查询状态。