我已经看到一些项目(例如 jsoup)正在使用这个新的 getter/setter 命名约定:
String name()
void name(String value)
而不是旧的 getter/setter 对流:
String getName()
void setName(String value)
每个命名约定的积极和消极方面是什么?您何时以及为什么认为应该优先考虑其中一个?
我已经看到一些项目(例如 jsoup)正在使用这个新的 getter/setter 命名约定:
String name()
void name(String value)
而不是旧的 getter/setter 对流:
String getName()
void setName(String value)
每个命名约定的积极和消极方面是什么?您何时以及为什么认为应该优先考虑其中一个?
第一个示例不符合JavaBeans 规范[警告 PDF]。像 Spring 这样的某些框架采用这种命名约定,尤其是当您在 EL 中执行某些操作时,例如${object.name}
. 被翻译为object.getName()
. 如果您不遵循命名约定,这将失败(尽管有一些方法可以绕过它)。
在不讨论何时/是否使用 getter/setter 的情况下,通常最好坚持命名约定,因为这样会减少意外,尤其是当您与第三方库或框架集成时按照约定命名。
除了可读性和 API 风格外,什么都没有。
一些 API 接受这种风格,而另一些则不接受,喜欢Spring
injections
也JSF
无法识别这种语法(它们明确要求 get/set 用于属性)。
name()
当我正在处理的对象是不可变的时,我喜欢简单地使用,即我永远不会更改name
字段的值。当我处理一个可变对象时,我会使用你提到的第二个约定,仅仅是因为我认为它在可读性方面更胜一筹。
我总是喜欢使用动词作为方法名称,所以这对 getter 和 setter 也有效。
我只对变量使用名词。
遵循经典的 JavaBean 标准让我感觉更舒服。:)
如果库是低级的,我更喜欢使用较短的样式,并且我想明确说明这个组件不是 JavaBean。
如果有疑问,我会使用 JavaBean 样式。