2012-04-28 44 views
15

在包含它們的類中編寫代碼時,使用私有字段還是屬性是一種好的做法嗎?在包含類中使用屬​​性還是字段?

例如,如果我有此字段/屬性對,以外的類必須使用該屬性。裏面代碼怎麼樣?它應該使用私人領域,還是應該通過財產?

private string _foo; 

protected string Foo 
{ 
    get { return this._foo; } 
} 

private void SomeMethod() 
{ 
    string dummyVariable = "snuh" + this._foo; // So, this... 
    string dummyVariable = "snuh" + this.Foo; // ... or this? 
} 

在這裏使用屬性的一個優點是,如果getter中有任何邏輯,它仍然會被執行。我很想知道在這裏是否有最佳實踐策略。

+1

只要你一致,我**的意見**是沒關係的(因爲你的財產沒有做任何特別的事情),但我很好奇別人有什麼要說的。 – Tung 2012-04-28 19:43:24

+0

[本地使用私有字段x屬性的最佳實踐]的可能重複(http://stackoverflow.com/questions/833047/best-practice-on-local-use-of-private-field-x-property) – Matt 2012-04-28 19:44:45

+0

術語說明:您錯誤地使用術語「變量」。在這種情況下,你的意思是「場」。 – 2012-04-28 20:22:46

回答

8

當使用Auto-Implemented properties時,您沒有選擇 - 您必須使用屬性,因爲您無權訪問生成的字段。

如果你的財產不是簡單的並且做了一些額外的工作(驗證,激發事件等),你應該調用該財產以集中訪問和邏輯。

如果您有任何其他屬性(意味着沒有邏輯和支持字段一個簡​​單的屬性),我會問他們爲什麼不在上面的一個...

隨着你給的例子,它使幾乎沒有什麼區別 - 與您如何使用這些內容相一致並且真正歸結爲個人美學和編碼風格更重要。

+1

我想到了兩個用於簡單非自動屬性的用例:具有非默認初始值(C#)的屬性或具有私有setter(VB.NET)的屬性。 – Heinzi 2012-04-28 20:38:07

+0

@Heinzi - 真的,我對這個例子的回答部分也適用於那些人...... – Oded 2012-04-28 21:28:46

相關問題