字段设计

注释

此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。

封装原则是面向对象的设计中最重要的概念之一。 此原则指出,存储在对象中的数据只能访问该对象。

解释原则的一种有用方法是说,应设计一种类型,以便可以更改该类型(名称或类型更改)的字段,而不会中断类型成员以外的代码。 此解释立即意味着所有字段都必须是私有的。

我们将常量和静态只读字段排除在此严格限制范围之外,因为此类字段几乎按定义不需要更改。

❌ 请勿提供公共或受保护的实例字段。

应提供用于访问字段的属性,而不是将其设为公共或受保护。

✔️ 对永远不会更改的常量使用常量字段。

编译器将常量字段的值直接嵌入调用代码中。 因此,常量值永远无法更改,因为更改会带来中断兼容性的风险。

✔️ 对于预定义的对象实例,请使用公共静态 readonly 字段。

如果有类型的预定义实例,请将其声明为类型本身的公共只读静态字段。

❌ 请勿将可变类型的实例分配给 readonly 字段。

实例化后可以修改的对象称为可变类型。 例如,数组、大多数集合和流都是可变类型,但是 System.Int32System.Uri并且 System.String 都是不可变的。 引用类型字段上的只读修饰符可防止存储在字段中的实例被替换,但它不会阻止通过调用更改实例的成员来修改字段的实例数据。

部分内容 © 2005, 2009 Microsoft 公司。 保留所有权利。

获得皮尔逊教育公司许可后重印自 框架设计准则:可重用 .NET 库的约定、习惯和模式 ,由 Krzysztof Cwalina 和 Brad Abrams 编写,并作为微软 Windows 开发系列中的出版物之一,于 2008 年 10 月 22 日由 Addison-Wesley Professional 出版。

另请参阅