共用方式為


欄位設計

注意

此內容是由 Pearson Education, Inc. 授權轉載自架構設計指導方針:可重複使用 .NET 程式庫的慣例、慣用語和模式,第 2 版。 該版於 2008 年出版,該書自那以後已於第三版進行了全面修訂。 此頁面上的某些資訊可能已過期。

封裝原則是物件導向設計中的一大重要概念。 此原則指出只有物件才可存取儲存在該物件內的資料。

可以有效解譯原則的方式是,假設應該設計類型,使該類型欄位的變更 (名稱或類型變更) 可以進行,而不需中斷類型成員以外的程式碼。 此解譯會立即表示所有欄位都必須為私人。

我們會從這個嚴格限制中排除常數和靜態唯讀欄位,因為這類欄位依定義幾乎絕對不需要變更。

❌ 請勿提供公用或受保護的執行個體欄位。

您應該提供屬性來存取欄位,而不是將欄位設定為公用或受保護。

✔️ 請對永遠不會變更的常數使用常數欄位。

編譯器會將常數欄位的值直接轉換成呼叫程式碼。 因此,無法變更常數值,而不會造成中斷相容性的風險。

✔️ 請對預先定義的物件執行個體使用公用靜態 readonly 欄位。

如果有預先定義的類型執行個體,請將這些執行個體宣告為類型本身的公用唯讀靜態欄位。

❌ 請勿將可變動類型的執行個體指派給 readonly 欄位。

可變動類型是具有執行個體的類型,可在具現化之後加以修改。 例如,陣列、大部分集合和資料流都是可變動的類型,但 System.Int32System.UriSystem.String 全都是不可變的。 參考型別欄位上的唯讀修飾元可防止儲存在欄位中的執行個體被取代,但呼叫變更執行個體的成員不會防止修改欄位的執行個體資料。

Portions © 2005, 2009 Microsoft Corporation. 著作權所有,並保留一切權利。

獲 Pearson Education, Inc. 的授權再版,從 Krzysztof Cwalina 和 Brad Abrams 撰寫,並在 2008 年 10 月 22 日由 Addison-Wesley Professional 出版,作為 Microsoft Windows Development Series 一部份的 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 節錄。

另請參閱