.NET 指南:字段的设计
2007-02-01 20:00
204 查看
字段用来保持与对象相关联的数据。在大多数情节下,库中的任何非静态字段都应该是对于开发者不可见的。下列指导方针有助于你在库设计中正确地使用字段。
不要提供公共的或被保护的实例字段。公共的字段和被保护的字段不是版本良好的并且不会通过代码访问的安全需要而被保护。而是可以用公共的可见字段来作为替代,并使用私有的字段并通过属性来暴露它们。
为始终没有变化的常量而使用常量字段。例如,Math 类就把 E 和 PI 定义成了静态常量。
编译器会把常量字段的值直接插入到代码调用中,这就表示常量的值始终不会被改变,并且也不会引入兼容性问题的风险。
为预定义的对象实例而使用公共的静态只读字段。例如,DateTime 类提供了能够用来获得 DateTime 对象并设置最大或最小时间值的静态只读字段。请参考:[MaxValue 属性]和[MinValue 属性]。
不要把易变的类型实例指派给只读字段。使用可变的类型而被创建的对象能够在它们被创建之后被更改。例如,数组和大部分集合就是可变的类型,而 Int32、Uri,以及 String 就是不可变的类型。关于保持了一个可变的引用类型的字段,只读的修改器能够防止字段值被重写,但是不能保护可变的类型被更改。
下列代码范例示范了使用只读字段时的问题。BadDesign 类创建了一个只读的字段并使用一个只读的属性来暴露它。但是这仍然无法防止 ShowBadDesign 类对于只读字段所作的更改。
不要提供公共的或被保护的实例字段。公共的字段和被保护的字段不是版本良好的并且不会通过代码访问的安全需要而被保护。而是可以用公共的可见字段来作为替代,并使用私有的字段并通过属性来暴露它们。
为始终没有变化的常量而使用常量字段。例如,Math 类就把 E 和 PI 定义成了静态常量。
编译器会把常量字段的值直接插入到代码调用中,这就表示常量的值始终不会被改变,并且也不会引入兼容性问题的风险。
为预定义的对象实例而使用公共的静态只读字段。例如,DateTime 类提供了能够用来获得 DateTime 对象并设置最大或最小时间值的静态只读字段。请参考:[MaxValue 属性]和[MinValue 属性]。
不要把易变的类型实例指派给只读字段。使用可变的类型而被创建的对象能够在它们被创建之后被更改。例如,数组和大部分集合就是可变的类型,而 Int32、Uri,以及 String 就是不可变的类型。关于保持了一个可变的引用类型的字段,只读的修改器能够防止字段值被重写,但是不能保护可变的类型被更改。
下列代码范例示范了使用只读字段时的问题。BadDesign 类创建了一个只读的字段并使用一个只读的属性来暴露它。但是这仍然无法防止 ShowBadDesign 类对于只读字段所作的更改。
using System; namespace Examples.DesignGuidelines.Fields { public class BadDesign { public readonly int[] data = {1,2,3}; public int [] Data { get {return data;} } public void WriteData() { foreach (int i in data) { Console.Write ("{0} ", i); } Console.WriteLine(); } } public class ShowBadeDesign { public static void Main() { BadDesign bad = new BadDesign(); // 下列语句行将写入:1 2 3 bad.WriteData(); int[] badData = bad.Data; for (int i = 0; i< badData.Length; i++) { badData[i] = 0; } // 下列语句行将写入:0 0 0 // 因为坏数据已经被更改。 bad.WriteData(); } } }
相关文章推荐
- ASP.NET中Web DataGrid的使用指南(转自前沿设计网-找到这个真不容易啊!)
- 使用 ASP.NET 所创建的 XML Web 服务的设计指南
- (转载)数据库设计指南----第2 部分— 设计表和字段
- 应用程序设计指南:从N层到 .NET
- FastReport for.Net开发指南-主从表(Master/Detail)报表设计详解
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 对象设计器使用帮助
- 数据库设计指南 第2 部分— 设计表和字段
- .NET 指南:标记枚举的设计
- ASP.NET Core 中文文档 第二章 指南(4.8)添加新的字段
- NDatabase 入门,简单使用 增删改查。让NDatabase带你脱离ADO.net,各种SQL 语句,各种DBMS,各种CRM,IOC之类的烦恼。我们也不需要仓库设计模式了,你妹的。不要表了,不要设计数据库字段了。就这样!
- .NET 指南:索引属性的设计
- NET初学者架构设计指南(四)Model-View-Controller
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
- 数据库设计指南(二)设计表和字段
- 应用程序设计指南:从 N 层到 .NET
- 应用程序设计指南:从 N 层到 .NET
- 数据库设计指南(二)设计表和字段
- 数据库设计指南(二)设计表和字段
- asp.net 创建 xml web service 设计指南
- 使用 ASP.NET 创建的 XML Web 服务的设计指南