是否有任何規則或者一般的最佳實踐何時使用屬性VS的方法?從技術上講,任何無參數方法都可以在屬性中進行,任何屬性都可以作爲一種方法,但有時候何時決定何時使用其他屬性可能會模糊。
我一直希望得到一些規則,你們在決定兩者之間時會牢記在心。
是否有任何規則或者一般的最佳實踐何時使用屬性VS的方法?從技術上講,任何無參數方法都可以在屬性中進行,任何屬性都可以作爲一種方法,但有時候何時決定何時使用其他屬性可能會模糊。
我一直希望得到一些規則,你們在決定兩者之間時會牢記在心。
一般標準是關於副作用。如果通過調用一個成員來獲得一個值,那麼你只能得到該值,這是一個屬性。如果有副作用,它應該可能是一種方法。
換句話說:儘管屬性不是字段,但它們的行爲應該非常像字段。這意味着不會產生副作用,執行時間不會太長,也不會拋出異常。
添加到cletus所說的。
這是從MSDN:「物業使用指南」 http://msdn.microsoft.com/en-us/library/bzwdh01d(VS.71).aspx 參見「屬性與方法」部分:
使用屬性時,一些er ..屬性是快速執行(例如ctrl.Color,ctrl.Text,ctrl.Width,DateTime.Now)。但如果它表示一個進程,則使用方法(例如str.GetHash(),machine.GetFqdn(),file.GetMd5())。所以在文件MD5,你不會讓一個屬性
此強調它最when to use a method:
操作是 要傳達給用戶 ,他們應該考慮緩存夠貴的 結果。
請注意.NET的DateTime。現在,儘管速度和屬性都很快,但它在程序中被多次調用時需要緩存,即使彼此靠近也是如此。他們決定讓它成爲一個財產,財產有一個當前性在它的感覺,不像當你調用一個方法時,它沒有感覺即時性/當前性在它。所以你需要考慮到,即使你得到一個價值並需要緩存,但如果它需要感受即時,通過任何方式使用財產。畢竟,如果事情真的很快,而且不像昂貴的操作,它必須有一個可以傳達其堅固性的結構。我認爲這就是爲什麼.NET有吸引力(或任何具有屬性構造的語言)的原因,它不會強制開發人員在使其成爲屬性時使用方法,它不會強制開發人員在使用方法時高性能的代碼圍繞重載的操作符,這是最好的務實編程
這是一個很好的問題。我不知道這方面的最佳做法。 在我看來,這通常是一個常識問題。
屬性與它自己的對象/類相關,通常描述它。 UI元素,背景,顏色,IsEnabled的最佳示例是適合的。
這些方法通常是對象/類可以執行並可以產生結果的操作。這裏最好的例子是MessageBox的Show方法。它會執行一個操作並返回結果。
我會看看this關於Properties vs Methods的SO帖子。
它提到看看Choosing Between Properties and Methods
在基本層面上,選擇屬性或方法之間的決定取決於'有','是'的論點。如果您需要的信息是屬性或質量,請使用屬性。如果這是一個行動,那麼方法。
但是在實踐層面上,可能很難以這種方式始終如此實施。
用基本詞語來說,屬性描述的是對象,而方法是對象可以做的動作。 對於代表汽車的物體,drive()
將是一種方法,並且color
將是屬性。
不拋出異常?如果設置的值是無效值,你會怎麼做?我認爲這是在字段上使用屬性的原因之一......在接受它之前對值進行檢查的能力。 – Svish 2009-12-06 06:01:55