本文彙整《Effective C#》一書的 50 條核心原則,涵蓋語言特性、資源管理、設計表達、組件建置、框架整合與雜項進階主題,為 C# 開發者提供系統性學習路徑。
第一章:C# 語言特性
- 原則 1:優先使用屬性而非欄位
- 原則 2:選擇
readonly 而非 const
- 原則 3:善用
is/as 避免強制轉型
- 原則 4:使用條件屬性而非
#if 預處理區塊
- 原則 5:始終提供
ToString() 覆寫
- 原則 6:區別值型別與參考型別行為
- 原則 7:選擇不可變的原子值型別
- 原則 8:確保 0 對值型別是有效狀態
- 原則 9:理解相等運算之間的關係
- 原則 10:理解
GetHashCode() 的缺陷與對策
- 原則 11:優先選擇
foreach 迴圈
第二章:.NET 資源管理
- 原則 12:選擇變數初始化器而非指派陳述式
- 原則 13:使用靜態建構函式初始化靜態成員
- 原則 14:使用建構函式鏈減少重複代碼
- 原則 15:善用
using 與 try/finally 釋放資源
- 原則 16:最小化垃圾產生
- 原則 17:最小化裝箱與拆箱操作
- 原則 18:實作標準
Dispose 模式
- 原則 19:優先定義介面而非繼承
第三章:用 C# 表達設計意圖
- 原則 20:辨別介面實作與虛擬方法覆寫的差異
- 原則 21:使用委派表示回呼
- 原則 22:使用事件定義對外介面
- 原則 23:避免回傳內部類別物件參考
- 原則 24:選擇宣告式編程而非命令式編程
- 原則 25:讓型別支援序列化
- 原則 26:實作
IComparable/IComparer 定義排序關係
- 原則 27:避免使用
ICloneable
- 原則 28:避免轉換運算子
- 原則 29:僅在強制更新基類時使用
new 修飾詞
第四章:建置二進位相容組件
- 原則 30:選擇 CLS 相容組件
- 原則 31:設計小而專一的函式
- 原則 32:設計小而內聚的組件
- 原則 33:限制型別可視性
- 原則 34:建立大容量 Web API
第五章:與 .NET Framework 協同工作
- 原則 35:優先覆寫方法而非使用事件處理器
- 原則 36:善用 .NET 執行時期診斷
- 原則 37:使用標準配置機制
- 原則 38:使用並支援資料繫結
- 原則 39:使用 .NET 驗證機制
- 原則 40:根據需求選擇集合類別
- 原則 41:優先選擇
DataSet 而非自訂資料結構
- 原則 42:使用屬性進行簡單反射
- 原則 43:勿濫用反射
- 原則 44:建立應用程式專屬例外類別
第六章:雜項進階主題
- 原則 45:選擇強型別例外保護程式
- 原則 46:最小化與非受控代碼交互
- 原則 47:選擇安全程式碼
- 原則 48:掌握更多工具與資源
- 原則 49:為 C# 2.0 做好準備
- 原則 50:了解 ECMA 標準
相關延伸閱讀
- 《Effective C# 精髓》摘選
- 《Effective C#》之減少裝箱與拆箱
- 《Effective C#》:使用成員初始化語法
- 《Effective C#》:區別四個判等函數
- 《Effective C#》:值型別與參考型別
- 《Effective C#》:使用委派實作回呼