總是用屬性 (Property) 來代替可訪問的數據成員
在 readonly 和 const 之間優先使用 readonly
在 as 和 強制類型轉換之間優先使用 as 操作符
使用條件屬性 (Conditional Attributes) 來代替條件編譯語句 #if
總是為自定義類重載 ToString 方法
區別值類型和引用類型
使用不可變的值類型(Immutable Atomic Value Types)
在值類型中確保是一個合法的數據
理解 ReferenceEquals static Equals instance Equals 和 比較運算符(==)之間的關系
理解 GetHashCode方法的缺陷
在編寫循環時優先使用 foreach
在定義變量的時候就將其初始化
使用靜態構造函數來初始化靜態成員變量
用多個構造函數時利用構造函數鏈
使用using和try/finally來處理資源的釋放
盡量避免產生資源垃圾
盡量避免使用裝箱(boxing)和拆箱(unboxing)
實現類的 Dispose 方法
在接口和繼承(Inheritance)之間優先使用接口(interface)
區分接口和重載(overrides)
用委托(delegate)來實現回調(callback)
用事件(event)來定義外部接口
避免返回類內部成員的引用
使用元數據來控制程序
優先使用可序列化(serilizable)類型
對需要排序的對象實現IComparable和IComparer接口
避免使用 ICloneable接口
避免使用類型轉換操作符
只有當基類加入了與派生類中現有的函數名稱相同的函數時才需要使用 new 操作符
盡量使用 CLSCompliant
盡量編寫短少簡單的函數
盡量編寫比較小的程序集(assembly)
限定類型的可見性(visibility)
編寫大粒度的 web API
在使用事件時優先繼承基類事件而不是重新創建一個事件
多使用 framework 的運行時調試 (DEBUG TRACE EVENTLOG等)
使標准的配置機制
使用並且在類中支的數據綁定功能 (Data Binding)
使的驗證機制 (Validation)
根據你的需求選擇正確的集合類(Collection)
在自定義結構中使用 DataSet
利用屬性(Attributes)
不要過度使用反射(Reflection)
創建完整的應用程序特定的異常
盡可能多的考慮程序可能出現的異常並作出處理
盡可能少的使用 Interop
盡量使用安全代碼 (safe code)
多多學習使用外部工具和資源
From:http://tw.wingwit.com/Article/program/net/201311/13934.html