何时使用 GetXXX() 方法以及何时使用 Getter 属性

发布于 2024-10-11 19:49:45 字数 195 浏览 2 评论 0原文

有一些 .NET 库使用方法来访问对象数据而不是 getter,即 HttpWebResponse.GetResponseStream()

还有通过属性访问流的示例,即HttpResponse.OutputStream

我的问题是何时使用哪种访问形式以及为什么?

There are some .NET libraries which use methods for accessing object data instead of getters i.e HttpWebResponse.GetResponseStream().

Also there are examples of accessing an stream by a property i.e HttpResponse.OutputStream.

My question is when to use which form of access and why ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

陌伤ぢ 2024-10-18 19:49:45

好问题。尽管属性只不过是一对 get/set 方法的语法糖,但这两个方法应该在不同的时间使用。

通常,在以下情况下应使用属性样式 getter:

  • 要返回的值表示类似字段的数据(通常是基元/值类型,但对另一个域对象的引用也可以)
  • 生成该值的计算(如果有)相对便宜/无副作用 给定
  • 相同的输入两次获取相同的值将产生相同的值

一般情况下,您应该在以下情况下使用 getter 方法:

  • 返回的对象是为此目的而创建的(例如工厂方法)
  • 评估返回的值需要副作用(例如,触摸文件系统、数据库或更改其他值)
  • 两次获取返回类型将产生两个不同的结果(即两个 Stream、数据库连接等)。

用一句话来说,如果从概念上讲,所需的值是对象所拥有的,则使用属性。如果所需的值是对象执行某些操作的结果,请使用方法。

Good question. Although a property is little more than syntax sugar for a pair of get/set methods, there two should be used in different times.

Generally, you should use a property-style getter when:

  • The value to be returned represents field-like data (generally primitives/value types, but a reference to another domain object is also fine)
  • The calculation, if any, to produce that value is relatively cheap/side-effect free
  • Getting the same value twice will produce the same value given the same inputs

Generally, you should use a getter method when:

  • The returned object is created for the purpose (e.g. factory methods)
  • Evaluating the returned value requires side effects (e.g. touching a file system, database, or changing other values)
  • Getting the return type twice will produce two distinct results (i.e. two Streams, db connections, etc).

In a sentence, if conceptually speaking the value needed is something the object HAS, use a property. If the value needed is the result of something the object DOES, use a method.

情徒 2024-10-18 19:49:45

好问题。 这篇文章提出了一些好的观点。一般来说,当计算成本昂贵时我使用方法,而当计算成本不高(即返回存储值)时我使用属性。

Good question. This article brings up a few good points. In general, I use methods when the computation is expensive and properties when computation is not expensive (i.e. a stored value is returned).

幸福%小乖 2024-10-18 19:49:45

我的观点是,我确信,您应该只使用属性进行序列化,很快就会达到-10。在所有其他情况下,显式方法调用是更好的选择,因为当您查看它时,您知道正在调用可能具有副作用的方法。

我猜“正确”(tm)的答案是,当你的方法要做的只是返回值时,使用 getter/setter 是可以的,但如果有任何工作要做,请使用方法。

My opinion which, I'm sure, will get to -10 real fast, is that you should only use properties for serialization. In all other cases explicit method call is preferable because when you look at it, you know that a method with possible side effects is being invoked.

I guess the "correct" (tm) answer is that when all your method would do is return the value, it is ok to use getter/setter, but if there is any work to do, use a method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文