《Effective C#》
儘可能使用屬性而不是資料成員。原因非常簡單,因為屬性是類的外部介面,而資料成員為類的內部實現,使用屬性對內部成員進行封裝,並新增額外的功能,譬如賦值前檢查、設定為只讀等等,也更能符合OO的要求,畢竟把內部資料成員直接暴露給外界是十分危險的的事情。
可能使用VS2003的朋友會覺得寫起來有些麻煩,但2005中己經有封裝欄位的功能,能幫我們省不少事,所以還是能使用屬性就使用屬性吧。
最後再加一點我個人看法,這一點也不是太絕對,在一些非常小的,也不會改動的小工程中,直接使用內部成員也未嘗不可,儘管使用屬性會在JIT編繹時以Inline處理,效能上基本沒有損失,但屬性必竟是當作函式呼叫的,而且使用屬性和內部成員兩者成生的IL程式碼量相差也不少。
Item2:Prefer readonly to const
這個沒什麼好說的,如果決定使用常量,而且該常量能在編繹時確定,就使用const,如果是在執行時確定的,就使用readonly.只是要注意編繹時常量在編繹後會被替換成該常量的實際值,這可能會給以後的程式升級帶來影響。
Item3: Prefer the is or as Operators to Casts (is or as 優於強制轉換)
型別轉換,一個老話題,一個在程式設計中應儘量避免但又可不能完全避免的問題,每種語言都有相應的型別轉換的操作符,c#也不例外,對於基元型別有Convert class,對於引用型別,其提供了is 和 as關鍵字。(注 is 也可用於值型別,但as只可用於引用型別或nullable型別)。這條主要是說對於引用型別的型別轉換,is or as 要優於強制轉換,主要原因是使用is or as型別轉換(注:準確的講 as 才算是型別轉換操作符,is僅能判斷型別,不能進行型別轉換)不會拋InvalidCastException,從而我們也不需要在程式中做相應的try...catch處理,當型別轉換符as轉換不成功時會返回null,我們只需對其返回結果進行檢查即可。
as or is使用起來要注意一點,就是其不會呼叫使用者自己定義的型別轉換方法,它可以呼叫的方法為編繹時確定的型別所提供的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-612014/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《Effective C#》讀書筆記C#筆記
- 《More Effective C#》讀書筆記C#筆記
- Effective C# :建立二進位制元件C#元件
- Effective C#:使用標準配置機制C#
- Effective C# 要點小結,不懂也得寫C#
- Effective C#:儘量減少記憶體垃圾C#記憶體
- Effective C#:儘量減少裝箱和拆箱C#
- Effective C#:利用using和try/finally語句來清理資源C#
- 《Effective Go》--deferGo
- effective java (轉)Java
- Effective C# Item9:理解幾個相等判斷之間的關係C#
- 《Effective Go》--MapsGo
- Effective Oracle by DesignOracle
- effective C++ : CHAPTER 8C++APT
- Effective C++筆記C++筆記
- effective java 觀後感Java
- 【Effective Modern C++】索引C++索引
- Effective Java(四) 泛型Java泛型
- 《Effective C++》筆記C++筆記
- Effective Java 讀書筆記Java筆記
- [心得] Effective Java心得筆記Java筆記
- Errata in Effective Java Second EditionJava
- Effective Oracle by Design筆記Oracle筆記
- C++::My Effective C++C++
- Effective C++: Item 32 (轉)C++
- Effective C++: Item 21 (轉)C++
- Effective C++: Item 24 (轉)C++
- effective C++筆記1C++筆記
- 《Effective-Ruby》讀書筆記筆記
- 《Effective Java》--Java進階必備Java
- Effective Object C 2.0 『熟悉Object C』Object
- Effective Python學習筆記Python筆記
- Effective C++ 35,36,37C++
- Effective Java 讀書筆記(2)Java筆記
- 理解NSCopying--Effective筆記筆記
- 《Effective Go》--空白識別符號Go符號
- Java Puzzlers & Effective Java - Book SharingJava
- 《Effective C++》讀書筆記C++筆記