提高C#編程水平的50個要點
1.區(qū)別值類型和引用類型
2.使用不可變的值類型(Immutable Atomic Value Types)
3.在值類型中,確保0是一個合法的數(shù)據(jù)
4.理解 ReferenceEquals, static Equals, instance Equals 和 比較運算符(==)之間的關(guān)系
5 .理解 GetHashCode方法的缺陷
6.總是用屬性 (Property) 來代替可訪問的數(shù)據(jù)成員
7.在 readonly 和 const 之間,優(yōu)先使用 readonly
8.在 as 和 強制類型轉(zhuǎn)換之間,優(yōu)先使用 as 操作符
9.使用條件屬性 (Conditional Attributes) 來代替條件編譯語句 #if
10.總是為自定義類重載 ToString 方法
11.在編寫循環(huán)時,優(yōu)先使用 foreach.
12.在定義變量的時候就將其初始化
13.使用靜態(tài)構(gòu)造函數(shù)來初始化靜態(tài)成員變量
14.用多個構(gòu)造函數(shù)時,利用構(gòu)造函數(shù)鏈
15.使用using和try/finally來處理資源的釋放
16.盡量避免產(chǎn)生資源垃圾
17.盡量避免使用裝箱(boxing)和拆箱(unboxing)
18.實現(xiàn)類的 Dispose 方法
19.在接口和繼承(Inheritance)之間,優(yōu)先使用接口(interface)
20.區(qū)分接口和重載(overrides)
21.用委托(delegate)來實現(xiàn)回調(diào)(callback)
22.用事件(event)來定義外部接口
23.避免返回類內(nèi)部成員的引用
24.使用元數(shù)據(jù)來控制程序
25.優(yōu)先使用可序列化(serilizable)類型
26.對需要排序的對象實現(xiàn)IComparable和IComparer接口
27.避免使用 ICloneable接口
28.避免使用類型轉(zhuǎn)換操作符
29.只有當(dāng)基類加入了與派生類中現(xiàn)有的函數(shù)名稱相同的函數(shù)時,才需要使用 new 操作符
30.盡量使用 CLS-Compliant
31.盡量編寫短少,簡單的函數(shù)
32.盡量編寫比較小的程序集(assembly)
33.限定類型的可見性(visibility)
34.編寫大粒度的 web API
35.在使用事件時,優(yōu)先繼承基類事件,而不是重新創(chuàng)建一個事件
36.多使用 framework 的運行時調(diào)試 (DEBUG, TRACE, EVENTLOG等)
37.使用.net標(biāo)準的配置機制
38.使用并且在類中支持.net的數(shù)據(jù)綁定功能 (Data Binding)
39.使用.net的驗證機制 (Validation)
40.根據(jù)你的需求選擇正確的集合類(Collection)
41.盡量使用安全代碼 (safe code)
42.多多學(xué)習(xí)、使用外部工具和資源
43.準備使用 C# 2.0
44.學(xué)習(xí) ECMA 標(biāo)準
45.在自定義結(jié)構(gòu)中使用 DataSet
46.利用屬性(Attributes)
47.不要過度使用反射(Reflection)
48.創(chuàng)建完整的,應(yīng)用程序特定的異常
49.盡可能多的考慮程序可能出現(xiàn)的異常,并作出處理
50.盡可能少的使用 Interop