`name()`与`getName()`命名约定?

时间:2012-08-29 23:41:08

标签: java oop naming-conventions

我见过一些项目(例如jsoup)正在使用这个新的getter / setter命名约定:

String name()
void   name(String value)

而不是旧的getter / setter对流:

String getName()
void   setName(String value)

每个命名约定的积极和消极方面是什么?何时以及为什么你认为一个人应该优先于另一个?

5 个答案:

答案 0 :(得分:9)

第一个示例不符合JavaBeans specification [警告PDF]。有一些像Spring这样的框架,它假设了这个命名约定,特别是当你在像${object.name}这样的EL中执行某些操作时,会被转换为object.getName()。如果您不遵循命名约定(尽管有办法解决它),这将失败。

在没有讨论何时/何时使用getter / setter的情况下,通常最好坚持使用命名约定,因为这种方式的意外较少,特别是当您与第三方库或框架集成时期待根据惯例命名。

答案 1 :(得分:3)

除了可读性和API风格之外什么都没有。

有些API接受这种风格,有些则不接受,Spring injectionsJSF无法识别此语法(它们明确要求获取/设置属性)。

答案 2 :(得分:3)

当我正在处理的对象是不可变的时,我喜欢简单地使用name(),即我永远不会改变name字段的值。当我处理一个可变对象时,我会使用你提到的第二个约定,因为我认为它在可读性方面更优越。

答案 3 :(得分:2)

我总是喜欢使用动词作为方法名称,所以这对于getter和setter也是有效的。

我仅将名词用于变量

遵循经典的JavaBean标准让我感觉更舒服。 :)

答案 4 :(得分:1)

如果库是低级别的,我更喜欢使用较短的样式,我想说明这个组件不是JavaBean。

如果有疑问,我会使用JavaBean样式。