本書是 GOTOP 碁峯出版的
全名是 Effective C# 中文版|寫出良好C#程式的50個具體作法第三版
作者:Bill Wagner
譯者:楊尊一
ISBN 978-986-476-348-1 定價 450元
本書買許久了,只是一直沒時間看完,加上內容有點進階,所以想說寫篇文章
把書的內容用自己的理解,做些補充
以下文章只提供書本得做法標題,至於內容說明解釋則是我自己的理解,喜歡的人請去支持購買本書
我跟書和出版社都沒關係,純粹只是訂一個目標來讓我有動力讀完這本書
因為這本書本身內容就有點進階。我本身的程度還不夠完全理解。所以還需要多吸收各方面的知識
才能夠理解書上做法的本質,我不保證以下內容完全正確,請自行評估
另外,本書因為是翻譯版本,翻譯內容本來就是進階內容,加上譯者沒辦法去補充說明內容
所以書上內容及程式部分沒說得更明確讓人理解。(可能我本來的能力就還不足夠理解)
這篇文章我會慢慢寫也會跳者寫,把了解的內容先寫。盡量補充到可以明確的解釋。
理解上有錯誤的歡迎各位回覆說明。
第一章 C# 語言慣用語法
書上有說 這些用法基本上是適用於C#,雖然C#語法上和C++或Java有點像。
但是發展至現在,有需多用法必須習慣於C#,這樣才有C#的優勢
做法01 偏好隱含型別的區域變數
做法02 偏好 readonly 而非 const
做法03 偏好 is 或 as 運算子而非型別轉換
做法04 以內插字串取代 string.Format()
做法05 對文化特定字串偏好 FormattableString
做法06 避免字串型別API
做法07 以delegate 表示 callback
做法08 對事件叫用使用空條件運算子
做法09 減少 boxing 與 unboxing
做法10 只對基底類別更新使用 new 修飾詞
第二章 .NET 資源管理
做法11 認識 .NET 資源管理
做法12 偏好成員初始化程序而非指派陳述
做法13 對靜態類別成員進行適當的初始化
做法14 減少重複的初始化邏輯
做法15 避免建構不必要的物件
做法16 絕不再建構元呼叫虛擬函式
做法17 實作標準的 Dispose 模式
第三章 使用泛型
做法18 定義最少與足夠的約束
做法19 使用執行期型別檢查特化泛型演算法
做法20 以 IComparable<T> 與 IComparer<T> 實作排序關係
做法21 建構支持 Disposable 型別參數的泛型類別
做法22 支持泛型的共變數與反變數
做法23 使用 delegate 定義型別參數的方法約束
做法24 勿於基底類別或界面建構泛型特化
做法25 偏好泛型方法,除非型別參數是實例欄位
做法26 除泛型界面外還要實作傳統界面
做法27 以擴充方法加入最少的界面合約
做法28 以擴充方法加強建構型別
第四章 使用 LINQ
做法29 偏好以 Iterator 方法回傳集合
做法30 偏好查詢語法而非迴圈
做法31 為序列建構可組合 API
做法32 從動作、述詞與函式中解耦迭代
做法33 被請求時產生序列項目
做法34 使用函式參數解耦
做法35 不要過載擴充方法
做法36 認識查詢表示式如何對應方法呼叫
做法37 在查詢中偏好惰性求值而非積極求值
做法38 偏好 lambda 表示式而非方法
做法39 避免在函式與動作中拋出例外
做法40 區分提前與延遲執行
做法41 避免捕捉昂貴的資源
做法42 區分 IEnumerable 與 IQueryable 資料來源
做法43 使用 Single() 與 First() 以強制查詢的語意結果
做法44 避免修改限界變數
例外的最佳做法
做法45 以例外回報方法約定失敗
做法46 以 using 與 try/final 清理資源
做法47 建構完整的應用程式專屬例外類別
做法48 偏好強例外保證
做法49 偏好例外過濾而非 catch 與重新拋出
做法50 利用例外過濾的副作用