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

use*_*349 9 java naming-conventions javabeans

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

  1. 查看代码时,您可以立即确定方法的用途.
  2. 查看API文档时,由于Java文档的字母顺序,所有方法都组合在一起.
  3. 使用任何IDE的代码完成功能时,可以轻松直观地进行排序并找到您要查找的方法.这又是由于IDE的字母顺序.

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

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

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

以下是让人们思考而不是实际问题.

如上所述,我一直坚持使用Java Bean命名约定.我认为它们在很多方面都提供了很多优势.我认为最大的问题是没有Java Beans,很多人会使用令人困惑的命名约定

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

  1. 如果方法名称是名词,则该方法应返回一个值.
  2. 如果方法名称是动词,则该方法应始终执行某些操作.如果方法返回值,则返回的值应与执行的操作相关.
  3. 如果方法名称是形容词,则不应单独使用该名称.例如,big()应该是isBig().
  4. 不应该单独使用不是对象的隐式属性的名词.
    例如:
    size()House对象的适当方法,但door()不是.其原因在于它size是一种house由自然界决定的继承属性.house拥有a在物理上并不是必需的door.
    而不是door(),该方法应该被命名getDoor().
  5. 如果方法名称遵循多个词性,则该方法总是需要来自用户端的不必要的思考.因此,该方法可能应该重命名.
    例如:
    假设我有一个名为的方法profile().取决于它所属的类,profile()可能是动词或名词.我可以分析一些东西,或者我可以获得个人资料.将方法的名称更改为getProfile()doProfiling()将添加说明.

小智 0

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