在bean,反射,内省或任何其他经常引用的废话的上下文之外,Java Getter / Setter总是被标记为Type getAttribute()
和void setAttribute(Type a)
的重要原因是什么?
我最近阅读并编写了很多C ++代码,当回到Java时,我突然觉得有必要使用Type attribute()
和void attribute(Type a)
作为getter和setter的签名,因为他们有点感觉突然使用起来更舒适。它让我想起函数式编程,将属性作为对象的方法,而不是让方法明确地改变或访问属性。
答案 0 :(得分:2)
您可以按照自己喜欢的方式使用这些方法;
Type attribute()
和void attribute(Type a)
它是你第一个例子的原因
Type getAttribute() and void setAttribute(Type a)
用于明确该方法的用途。例如,项目的新开发人员可以获取并理解代码流,而无需在不同的类之间移动以查看该方法的作用。
Getters& Setter通常只有一行功能。如果函数要进行一些数据操作,它通常使用描述性名称而不是get或set。
<强>要点:强> 吸气剂和Setter主要用于实体对象,不应该进行数据操作,不要说它不能完成。
答案 1 :(得分:2)
较短的款式是我使用的款式。 AFAIK低级Java编程的人倾向于使用它,因为它更像是C ++,或者因为它不像EJB那样。
JavaBean getter / setter样式的问题是它假定只是设置和获取变量的实现,但情况并非总是如此。
答案 2 :(得分:2)
“{em>方法应该是动词”的Java Naming Conventions状态,社区通常将其概括为“方法应以动词开头”。这是一致性的问题。您可以很好地使用attribute
,但我可以向您保证,人们会混淆它。因此,如果您希望其他人阅读并更改您的代码,我强烈建议您选择getAttribute
和setAttribute
。 Robert C. Martin 在他的书清洁代码(章节“方法名称”)中支持这一论点。它明确地处理了你的案件。
话虽这么说,Java-API本身有时会违反此规则(例如,使用Collections中的方法size()
)。这是一个已知的问题,但不应该阻止你做得更好。