C# 何时使用getX方法

C# 何时使用getX方法,c#,java,properties,C#,Java,Properties,从C#背景出发,我们使用属性来检索不需要很长时间的内容,如果检索需要很长时间,则使用getX方法()。在Java中,由于没有属性,您是对这两种情况都使用getX,还是有其他约定来指示从不太快的访问进行快速访问(除了记录它) 编辑: 例如,对于耗时的get操作(如数据库访问),您会使用不同的命名约定,还是也会使用getX命名约定?这取决于具体情况和您正在执行的操作-例如,您可能会使用loadX,fetchX,computeX-或者有时只是getX作为普通的“便宜”属性。这取决于具体情况和您正在做的

从C#背景出发,我们使用属性来检索不需要很长时间的内容,如果检索需要很长时间,则使用
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