Java Getter Setter代码样式



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

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

我使用的是较短的样式。AFAIK那些在低级Java编程中倾向于使用它,可能是因为它更像C++,或者因为它不太像EJB。

JavaBean getter/setter样式的问题在于,它假设实现的只是设置和获取变量,但情况并非总是如此。

您可以按照自己熟悉的方式使用这些方法;

CCD_ 5和CCD_ 6

原因是作为你的第一个例子

Type getAttribute() and void setAttribute(Type a)

使用是为了清楚地表明该方法的用途。例如,项目的新开发人员可以掌握和理解代码流,而无需在不同的类之间移动来查看该方法的作用。

Getters&setter通常只有一行函数。如果一个函数要进行一些数据处理,它通常使用描述性名称,而不是有一个get或set。

摘要:Getters&setter主要用于实体对象,在实体对象中不应该进行数据操作,而不是说不能进行数据操作。

Java命名惯例规定"方法应该是动词",社区通常将其概括为"Methods should started with a verb。这是一个一致性问题。你可以很好地使用attribute,但我可以保证人们会混淆它。因此,如果你希望其他人阅读并更改你的代码,我强烈建议使用getAttributesetAttribute。这一论点得到了Robert C.Martin在其著作《清洁代码》("方法名称"一节)中的支持。它明确地处理你的案件。

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

最新更新