Welcome

首页 / 软件开发 / C# / Effective C#原则1:尽可能的使用属性(property),而不是数据成员(field)

Effective C#原则1:尽可能的使用属性(property),而不是数据成员(field)2010-12-09 博客园 Wu.Country@侠缘译我们的目标:尽可能编写出运行效率更高,更健壮,更容易维护的C#代码。

原则一:尽可能的使用属性(property),而不是数据成员(field)。

Always use properties instead of accessible data members.

出于以下几点原因,请在设计类时,尽可能的使用属性,而不 是成员。

1、.Net对属性的支持远远大于对成员的支持,你可以对属性进 行数据绑定,设计时说明等很多数据成员不被支持的内容。看看.net里的属性面 板,你会明白的。

2、数据安全性检测;

属性本质上是两个函数 ,只是因为C#的特殊语法,但我们可以像访问成员一样的访问它。因此我们可 以在属性设计上添加更多更灵活的内容,对属性进行管理。其中对属性数据的检 测是其中之一。

在对数据检测时,如果发现数据不满足条件,最好以抛 出异常的形式来解决,千万不要设置默认值,这是很危险的事情。例如:

public string Name{
get{
if(this._Name==null){
return “NoName”;
}else{
return this._Name;
}
}
set{
if(value==null){
this._Name = “NoName”;
}else if(value.Length<=10) {
this._Name = value;
}else{
this._Name = value.SubString(0,10);
}
}
}

看上去很不错 不是吗?请马上动手修改你的代码吧,上面的代码是很危险的!或者你还不明白 ,明明对数据进行了安全检测,为什么还是危险的呢?试想这样的情况,有两个 实例o1与o2, o1的Name为null,我们做了这样的事:o2.Name = o1.Name;

结果是什么?o2.Name为”NoName”,而在本质上, o1与o2的Name是根本不相等的。这会对后面的程序运行带来很大的麻烦。请以抛 出异常的形式来解决数据不满足条件时的问题。