来自C#背景我们使用不需要很长时间才能检索的属性和getX
方法(如果某些内容需要很长时间(msdn link))。在Java中,由于没有属性,您是否在这两种情况下都使用getX
,或者是否有其他约定来表示从不那么快速的访问(除了记录它)之外的快速访问?
修改
例如,您是否会为耗时的get操作(如数据库访问)使用不同的命名约定,还是使用getX
命名约定?
答案 0 :(得分:4)
通常getX()
方法被认为是快速访问方法,数据库支持的方法应该是findX()
或loadX()
或类似的东西,但据我所知,没有全局就此达成协议。有时甚至不会遵守“吸气者应该快速”的规则。
答案 1 :(得分:2)
getX
约定来自JavaBean规范。最近,POJOs(普通旧Java对象)的使用变得非常流行,因为许多框架使用getter和setter来操纵你的对象,包括Spring和Hibernate。
更具体地说:
getX
表示非布符X
(getter)isX
表示布尔值X
(getter)setX
代表X
(setter)如果您不使用需要使用POJO的框架,那么请务必为您的方法命名,以便您知道他们乍一看他们做了什么。
答案 2 :(得分:0)
这取决于具体情况以及您正在做的事情 - 例如,您可以使用loadX
,fetchX
,computeX
- 或者有时只使用getX
正常的“廉价”财产。
答案 3 :(得分:0)
根据经验,创建一个私有成员字段以便本地访问您的属性,并创建一个getter / setter以进行外部访问。
许多第三方库(如Spring)依赖公共方法进行依赖注入(控制反转)和面向方面编程,因此使用getter / setter可以促进这种编程风格。
例如,Spring可能用于将两个对象关联在一起。或者您可以使用AOP在一些有点昂贵的get操作周围添加一些缓存行为。
它还允许您在更改或检索属性时设置断点,添加日志记录等,这对调试很有用。