我們的目標:盡可能編寫出運行效率更高,更健壯,更容易維護的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是根本不相等的。這會對後面的程序運行帶來很大的麻煩。請以拋 出異常的形式來解決數據不滿足條件時的問題。