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