C# 何时使用getX方法
从C#背景出发,我们使用属性来检索不需要很长时间的内容,如果检索需要很长时间,则使用C# 何时使用getX方法,c#,java,properties,C#,Java,Properties,从C#背景出发,我们使用属性来检索不需要很长时间的内容,如果检索需要很长时间,则使用getX方法()。在Java中,由于没有属性,您是对这两种情况都使用getX,还是有其他约定来指示从不太快的访问进行快速访问(除了记录它) 编辑: 例如,对于耗时的get操作(如数据库访问),您会使用不同的命名约定,还是也会使用getX命名约定?这取决于具体情况和您正在执行的操作-例如,您可能会使用loadX,fetchX,computeX-或者有时只是getX作为普通的“便宜”属性。这取决于具体情况和您正在做的
getX
方法()。在Java中,由于没有属性,您是对这两种情况都使用getX
,还是有其他约定来指示从不太快的访问进行快速访问(除了记录它)
编辑:
例如,对于耗时的get操作(如数据库访问),您会使用不同的命名约定,还是也会使用
getX
命名约定?这取决于具体情况和您正在执行的操作-例如,您可能会使用loadX
,fetchX
,computeX
-或者有时只是getX
作为普通的“便宜”属性。这取决于具体情况和您正在做的事情-例如,您可以使用loadX
,fetchX
,computeX
-或者有时只是getX
作为普通的“便宜”属性。通常getX()
方法被认为是快速访问方法,而数据库支持的方法应该是findX()
或loadX()
或类似的方法,但据我所知,在这方面没有达成一致意见。甚至“getters应该是快速的”规则有时也不被遵守。通常getX()
方法被认为是快速访问方法,而数据库支持的方法应该是findX()
或loadX()
或类似的方法,但据我所知,在这方面没有全球一致意见。即使是“getters应该是快速的”规则有时也没有得到遵守。getX的约定来自规范。最近,由于许多框架使用getter和setter(包括和)操作对象,所以(普通旧Java对象)的使用变得非常流行
更具体地说:
- 非布尔
X
的getX
(getter)
isX
用于布尔值X
(getter)
setX
用于X
的任何值(setter)
如果您不使用需要使用POJO的框架,那么请务必命名您的方法,以便您第一眼就知道它们的作用。getX的惯例来自规范。最近,由于许多框架使用getter和setter(包括和)操作对象,所以(普通旧Java对象)的使用变得非常流行
更具体地说:
- 非布尔
X
的getX
(getter)
isX
用于布尔值X
(getter)
setX
用于X
的任何值(setter)
如果您不使用需要使用POJO的框架,那么请务必命名您的方法,以便您第一眼就知道它们的作用。根据经验,创建一个私有成员字段用于本地访问您的属性,创建一个getter/setter用于外部访问
许多第三方lib(如Spring)依赖于公共方法进行依赖注入(控制反转)和面向方面编程,因此使用getter/setter可以促进这种编程风格
例如,可以使用Spring将两个对象关联在一起。或者,您可以使用AOP将一些缓存行为放在一个稍微昂贵的get操作周围
它还允许您在更改或检索属性时设置断点,添加日志记录等,这对调试非常有用。根据经验,创建一个私有成员字段用于本地访问属性,创建一个getter/setter用于外部访问
许多第三方lib(如Spring)依赖于公共方法进行依赖注入(控制反转)和面向方面编程,因此使用getter/setter可以促进这种编程风格
例如,可以使用Spring将两个对象关联在一起。或者,您可以使用AOP将一些缓存行为放在一个稍微昂贵的get操作周围
它还允许您在更改或检索属性时设置断点,添加日志记录等,这对调试非常有用。在Java中,调用方不应该知道某个方法是否需要很长时间,如果需要,则必须调用其他方法。在Java中,调用方不应该知道某个方法是否需要很长时间,如果可能,则必须调用其他方法。我知道布尔返回类型的isX
。我的重点是基于访问速度的命名,而不是返回类型。换言之:如果需要一些时间来处理,它应该仍然是getX
。@Cornelius:我想说,不是。getX
应该用于对变量的基本访问。对于需要时间的事情(数据库访问、计算、处理等),使用合适的命名方案;为什么要打破一个完全干净的模式来提高可读性呢?事实上,很多时候它不再可读了!和输入对象。在《月食》中,我们想念布尔人!很抱歉,这总是困扰着我……)@罗马咖啡馆:我也有同样的感受。我总是使用getX
,因为它更一致。仅对布尔值使用isX
会使布尔值看起来像家族中的害群之马。@Cornelius:选择样式是基于您喜欢如何阅读代码,而不是“速度”的考虑。JVM非常擅长优化常见情况;getter的简单属性访问很可能只是在运行时内联的。我的重点是基于访问速度的命名,而不是返回类型。换言之:如果需要一些时间来处理,它是否应该仍然是getX
。@Cornelius:我想说,不是。getX