2014-05-21 176 views
8

我一直觉得它非常有用,坚持在Java Beans命名约定:getX()setX()isX(),等等。我认为Java Bean的命名约定提供了几个主要优点:总是使用Java Beans命名约定是个好主意吗?

  1. 通过代码看时,你可以立即确定一种方法的目的。
  2. 查看API文档时,由于Java文档的字母顺序,所有方法都分组在一起。
  3. 使用任何IDE的代码完成功能时,通过简单直观的方式进行排序并找到要查找的方法。这又是由于IDE的字母顺序。

我知道有很多类是不使用Java Beans命名约定的Java API的一部分。一个例子是ArrayList,其具有诸如size()的方法。

其实我有两个主要问题:

  1. 它是一个好主意,总是尝试使用Java组件的命名约定?如果不是,为什么?
  2. 我知道ArrayList是在Java Beans发布之前编写的。对于所有(或至少大多数)新内容,Oracle是否习惯使用Java Beans命名约定?

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

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

个人认为其后面应始终坚持,我很好奇,看看别人怎么想这件事:

  1. 如果方法名称是名词,则该方法预计会返回一个值。
  2. 如果方法名称是一个动词,该方法应该总是做一些事情。如果该方法返回一个值,则返回的值应与执行的操作相关。
  3. 如果方法名称是形容词,则不应单独使用该名称。例如,big()应该是isBig()
  4. 不应该单独使用不是对象的隐式属性的名词。
    例如:
    size()House对象的适当方法,但door()不是。这是因为size是由本质决定的house的继承属性。 house的物理上不需要有door
    而不是door(),该方法应命名为getDoor()
  5. 如果方法名称符合多个词性,该方法总是需要用户端进行不必要的思考。因此,该方法可能应该重新命名。例如:
    比方说,我有一个方法叫做profile()。根据它属于的类别,profile()可能是动词或名词。我可以分析一些东西,或者我可以获取配置文件。将该方法的名称更改为getProfile()doProfiling()将增加澄清。
+0

我会说这会产生一定数量的个人意见。就我个人而言,我更喜欢使用bean命名约定,所以当我想尝试“获取”或“设置”一个值时,这些就是我开始搜索时使用的方法签名。 Oracle/Sun是否习惯使用更新的API遵循这些约定,我不会说真的,这是一种羞耻 – MadProgrammer

+0

类有大写的每个单词(例如ArrayList)。 –

+3

伟大的问题,也基于观点:/ 第一次我给了upvote和一个标志... –

回答

0

如果你坚持可变因素和getter/setter方法之间的命名规则也允许您使用依赖于类似的BeanUtils和Spring这些公约的工具。虽然将名称更改为更易读,但您可能会失去使用API​​来帮助解除“样板”代码的能力。

相关问题