Effective C# 原则23:避免返回内部类对象的引用
2009-02-19 08:16:30 来源:WEB开发网恒定类型,例如System.String,也是安全的。你可以返回一个字符串,或者其它恒定类型。恒定类型的安全性告诉你,没有客户可以修改字符串。你的内部状态是安全的。
第三个选择就是定义接口,从而充许客户访问内部成员的部份功能(参见原则19)。当你创建一个自己的类时,你可以创建一些设置接口,用来支持对类的子对象进行设置。通过这些接口来暴露一些功能函数,你可以尽可能的减少一些对数据的无意修改。客户可以通过你提供的接口访问类的内部对象,而这个接口并不包含这个类的全部的功能。在DataSet上暴露一个IListsource接口就是这种策略,可以阻止一些有想法的程序员来猜测实现这个接口的对象,以及强制转换。这样做和程序员付出更多的工作以及发现更多的BUG都是自找的(译注:这一句理解可能完全不对,读者可以自行参考原文:But programmers who go to that much work to create bugs get what they deserve.)。
System.Dataset类同时也使用了最后一种策略:包装对象。DataViewManager类提供了一种访问DataSet的方法,而且防止变向的方法来访问DataSeto类:
public class MyBusinessObject
{
// Read Only property providing access to a
// private data member:
private DataSet _ds;
public DataView this[ string tableName ]
{
get
{
return _ds.DefaultViewManager.
CreateDataView( _ds.Tables[ tableName ] );
}
}
}
// Access the dataset:
DataView list = bizObj[ "customers" ];
foreach ( DataRowView r in list )
Console.WriteLine( r[ "name" ] );
- ››避免在代码中直接任意使用ConfigurationManager.A...
- ››避免推广中出现负面信息的6个有效方法
- ››避免地方门户网站运营转型过程中的管理误区
- ››避免刷新页面,自动跳回到页面顶部的办法
- ››避免重复代码——know your library
- ››避免重复代码——know your library(续)
- ››避免遭受攻击 七个技巧保护服务器安全
- ››Effective C# 原则40:根据需求选择集合
- ››Effective C# 原则41:选择DataSet而不是自定义的...
- ››Effective C# 原则42:使用特性进行简单的反射
- ››Effective C# 原则43:请勿滥用反射
- ››Effective C# 原则44:创建应用程序特定的异常类
更多精彩
赞助商链接