8

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

String name()
void   name(String value)

而不是旧的 getter/setter 对流:

String getName()
void   setName(String value)

每个命名约定的积极和消极方面是什么?您何时以及为什么认为应该优先考虑其中一个?

4

5 回答 5

9

第一个示例不符合JavaBeans 规范[警告 PDF]。像 Spring 这样的某些框架采用这种命名约定,尤其是当您在 EL 中执行某些操作时,例如${object.name}. 被翻译为object.getName(). 如果您不遵循命名约定,这将失败(尽管有一些方法可以绕过它)。

在不讨论何时/是否使用 getter/setter 的情况下,通常最好坚持命名约定,因为这样会减少意外,尤其是当您与第三方库或框架集成时按照约定命名。

于 2012-08-29T23:44:17.300 回答
3

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

一些 API 接受这种风格,而另一些则不接受,喜欢Spring injectionsJSF无法识别这种语法(它们明确要求 get/set 用于属性)。

于 2012-08-29T23:43:10.870 回答
3

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

于 2012-08-29T23:44:41.480 回答
2

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

我只对变量使用名词

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

于 2012-08-30T07:33:16.090 回答
1

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

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

于 2012-08-30T07:33:16.047 回答