属性或方法或两者?

Kin*_*ing 0 .net c# coding-style

在.NET库和许多第三方库中,我可以看到有一些关于如何更改内部(私有)成员值的约定,它们支持属性(.NET属性)或方法(这些在java中常用)作为Setters和Getters)或两者兼容程序员.

我想知道何时(以及为什么)使用属性,方法或两者.例如,可以使用Visible属性(在Windows窗体中)或调用方法Show()Hide()来更改控件的可见性.有一些值(我知道有一些内部/私有值)只能通过调用方法(如setter)来更改.在设计我自己的控件时,类我有点犹豫选择属性或方法(或支持两者?),事实上,选择其中任何一个也是可以的(Java是一个仅使用方法的例子).我知道Properties相对于方法(作为getter和setter)的优势,但如果是这样的话,为什么我们必须在某些情况下使用方法,它们会被呈现给程序员甚至替换属性.我对此感到有点困惑,对我而言(正如我所说),我只使用方法时感觉很好(就像我在java中一样,它并不是那么糟糕:).

我想知道你的经历以及你的会议.我喜欢遵循编程中的标准约定(针对每个编程环境和每种语言)来区分它们.有些人发明了自己的风格,这些风格对于其他程序员来说有点难以理解,例如在C#中使用C++命名约定(甚至PHP命名约定?)?对我来说有点奇怪,抱歉.

请分享,谢谢......

Ree*_*sey 5

我知道Properties相对于方法(作为getter和setter)的优势,但如果是这样的话,为什么我们必须在某些情况下使用方法,它们会被呈现给程序员甚至替换属性.

一般来说,当使用一个属性将"快速"并且没有副作用的类时,会有一种期望.另一方面,一种方法表明"某事"将会发生.

在选择是否基于属性或方法公开API时,我会尝试查看值/方法/ etc表示的内容.如果它是一个,并且可以直接返回(或者很快得到很少的副作用),那么属性就更有意义了.如果它是一个操作,那么方法更有意义.