Java Getter Setter Codestyle

时间:2015-12-15 16:08:04

标签: java coding-style

在bean,反射,内省或任何其他经常引用的废话的上下文之外,Java Getter / Setter总是被标记为Type getAttribute()void setAttribute(Type a)的重要原因是什么?

我最近阅读并编写了很多C ++代码,当回到Java时,我突然觉得有必要使用Type attribute()void attribute(Type a)作为getter和setter的签名,因为他们有点感觉突然使用起来更舒适。它让我想起函数式编程,将属性作为对象的方法,而不是让方法明确地改变或访问属性。

3 个答案:

答案 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,但我可以向您保证,人们会混淆它。因此,如果您希望其他人阅读并更改您的代码,我强烈建议您选择getAttributesetAttribute Robert C. Martin 在他的书清洁代码(章节“方法名称”)中支持这一论点。它明确地处理了你的案件。

话虽这么说,Java-API本身有时会违反此规则(例如,使用Collections中的方法size())。这是一个已知的问题,但不应该阻止你做得更好。