始终使用JavaBeans命名约定是一个好主意吗?

始终使用JavaBeans命名约定是一个好主意吗?,java,naming-conventions,javabeans,Java,Naming Conventions,Javabeans,我总是发现遵守Java Bean命名约定非常有用:getX()、setX()、isX(),等等。我认为Java Bean命名约定提供了几个主要优势: 查看代码时,可以立即确定方法的用途 当浏览API文档时,由于Java文档的字母顺序,所有方法都被分组在一起 使用任何IDE的代码完成功能时,都可以轻松直观地进行排序并找到所需的方法。这同样是由于IDE的字母顺序 我知道有许多类是JavaAPI的一部分,它们不使用JavaBeans命名约定。例如,ArrayList,它有size()等方法 我实际上有

我总是发现遵守Java Bean命名约定非常有用:
getX()
setX()
isX()
,等等。我认为Java Bean命名约定提供了几个主要优势:

  • 查看代码时,可以立即确定方法的用途
  • 当浏览API文档时,由于Java文档的字母顺序,所有方法都被分组在一起
  • 使用任何IDE的代码完成功能时,都可以轻松直观地进行排序并找到所需的方法。这同样是由于IDE的字母顺序
  • 我知道有许多类是JavaAPI的一部分,它们不使用JavaBeans命名约定。例如,
    ArrayList
    ,它有
    size()
    等方法

    我实际上有两个主要问题:

  • 始终尝试使用JavaBeans命名约定是一个好主意吗?若否,原因为何
  • 我知道
    ArrayList
    是在javabean出现之前编写的。Oracle是否习惯于对所有(或至少大多数)新内容使用JavaBeans命名约定

  • 下面的内容更多的是让人们思考,而不是一个实际的问题。

    如上所述,我一直坚持使用JavaBean命名约定。我认为他们在很多方面提供了很多优势。我认为最大的问题是,如果没有JavaBean,很多人会使用混乱的命名约定

    我个人认为应始终坚持以下几点,我很想知道人们对此的看法:

  • 如果方法名称是名词,则该方法应返回一个值
  • 如果方法名称是动词,则该方法应始终执行某些操作。如果方法返回值,则返回的值应与执行的操作相关
  • 如果方法名称是一个形容词,则不应单独使用该名称。例如,
    big()
    应该是
    isBig()
  • 不属于对象隐含属性的名词不应单独使用。
    例如:
    size()
    House
    对象的合适方法,但
    door()
    不是。原因是
    大小
    是由自然决定的
    房屋的继承财产。
    房屋
    不需要有

    该方法应命名为
    getDoor()
    ,而不是
    door()
  • 如果方法名称附着在多个词类上,则该方法总是需要用户端进行不必要的思考。因此,该方法可能应该重命名。
    例如:
    假设我有一个名为
    profile()
    的方法。根据它所属的类,
    profile()
    可能是动词或名词。我可能在分析一些东西,或者我可能在获取个人资料。将方法的名称更改为
    getProfile()
    doProfiling()
    将增加说明

  • 如果遵守变量和getter/setter方法之间的命名约定,那么还可以使用依赖于这些约定的工具,如BeanUtils和Spring。在更改名称以使其更具可读性的同时,您可能会失去使用有助于简化“样板”代码的api的能力。

    我认为这将产生一定数量的个人意见。就个人而言,我更喜欢使用bean命名约定,因为我已经习惯了它,所以当我想尝试“获取”或“设置”一个值时,这些就是我开始搜索的方法签名。Oracle/Sun是否习惯于在更新的API中遵循这些约定,我想说的不是,这是一种羞耻的做法,每个单词都大写(例如ArrayList)。好问题,太基于观点了:/我第一次投了赞成票并给出了一个标志……标准Java库在这方面充满了不一致性,不要指望新类和接口会遵守任何标准。Java 9中引入的新类似乎已经放弃了JavaBeans命名约定: