从C#背景来看,我们使用属性来获取不需要很长时间的东西,如果需要花费很长时间(msdn link),则使用getX
方法。在Java中,由于没有属性,您是否在两种情况下使用getX
,或者是否存在其他约定来指示从不太快速的访问(除了记录文件)快速访问?什么时候使用getX方法
编辑: 比如你会使用不同的命名约定耗时像数据库访问GET操作或同时使用getX
命名约定?
从C#背景来看,我们使用属性来获取不需要很长时间的东西,如果需要花费很长时间(msdn link),则使用getX
方法。在Java中,由于没有属性,您是否在两种情况下使用getX
,或者是否存在其他约定来指示从不太快速的访问(除了记录文件)快速访问?什么时候使用getX方法
编辑: 比如你会使用不同的命名约定耗时像数据库访问GET操作或同时使用getX
命名约定?
通常getX()
方法被认为是快速访问方法和数据库支持的方法应该是沿着这些线路findX()
或loadX()
或东西,但据我知道有没有对其进行全球性协议。即使是“吸气者应该是快速的”规则有时也不被遵守。
这要看情况,你在做什么 - 例如,你可以使用loadX
,fetchX
,computeX
- 或有时只是getX
为正常的“便宜”的特性。
getX
约定来自JavaBean规范。最近,使用POJOs(普通Java对象)变得非常流行,因为许多框架使用getter和setter来操纵你的对象,包括Spring和Hibernate。
更具体地:
getX
用于nonboolean X
器(getter)isX
为一个布尔X
器(getter)setX
用于X
(设定部)的任何值如果你不会使用一个需要使用POJO的框架,那么通过一切手段给你的方法命名,让你知道他们乍一看。
我知道布尔返回类型的`isX`。我的重点更多的是基于访问速度的命名,而不是返回类型。换句话说,如果它需要一些时间来处理,它应该仍然是`getX`。 – Cornelius 2011-01-19 14:29:00
作为一个经验法则,创建一个专用成员字段,用于本地访问您的属性以及一个用于外部访问的getter/setter。
许多第三方库如Spring依赖公共方法进行依赖注入(控制反转)和面向方面编程,因此使用getter/setter可以促进这种编程风格。
例如,Spring可能用于将两个对象关联在一起。或者你也可以使用AOP将一些缓存行为放在一个比较昂贵的get操作上。
它还允许您在更改或检索属性时设置断点,添加可用于调试的日志记录等。
在Java中,调用者不应该知道方法是否需要很长时间,如果可能的话必须调用不同的方法。 – 2011-01-19 14:28:57