8
我一直觉得它非常有用,坚持在Java Beans命名约定:getX()
,setX()
,isX()
,等等。我认为Java Bean的命名约定提供了几个主要优点:总是使用Java Beans命名约定是个好主意吗?
- 通过代码看时,你可以立即确定一种方法的目的。
- 查看API文档时,由于Java文档的字母顺序,所有方法都分组在一起。
- 使用任何IDE的代码完成功能时,通过简单直观的方式进行排序并找到要查找的方法。这又是由于IDE的字母顺序。
我知道有很多类是不使用Java Beans命名约定的Java API的一部分。一个例子是ArrayList
,其具有诸如size()
的方法。
其实我有两个主要问题:
- 它是一个好主意,总是尝试使用Java组件的命名约定?如果不是,为什么?
- 我知道
ArrayList
是在Java Beans发布之前编写的。对于所有(或至少大多数)新内容,Oracle是否习惯使用Java Beans命名约定?
下面是更多的让人们去思考,而不是一个实际的问题。
正如我上面所说的,我一直坚持使用Java Bean命名约定。我认为他们在很多方面提供了很多优势。我认为最大的问题是,没有Java组件,有很多人使用混乱的命名约定
我个人认为其后面应始终坚持,我很好奇,看看别人怎么想这件事:
- 如果方法名称是名词,则该方法预计会返回一个值。
- 如果方法名称是一个动词,该方法应该总是做一些事情。如果该方法返回一个值,则返回的值应与执行的操作相关。
- 如果方法名称是形容词,则不应单独使用该名称。例如,
big()
应该是isBig()
。 - 不应该单独使用不是对象的隐式属性的名词。
例如:size()
是House
对象的适当方法,但door()
不是。这是因为size
是由本质决定的house
的继承属性。house
的物理上不需要有door
。
而不是door()
,该方法应命名为getDoor()
。 - 如果方法名称符合多个词性,该方法总是需要用户端进行不必要的思考。因此,该方法可能应该重新命名。例如:
比方说,我有一个方法叫做profile()
。根据它属于的类别,profile()
可能是动词或名词。我可以分析一些东西,或者我可以获取配置文件。将该方法的名称更改为getProfile()
或doProfiling()
将增加澄清。
我会说这会产生一定数量的个人意见。就我个人而言,我更喜欢使用bean命名约定,所以当我想尝试“获取”或“设置”一个值时,这些就是我开始搜索时使用的方法签名。 Oracle/Sun是否习惯使用更新的API遵循这些约定,我不会说真的,这是一种羞耻 – MadProgrammer
类有大写的每个单词(例如ArrayList)。 –
伟大的问题,也基于观点:/ 第一次我给了upvote和一个标志... –