涵蓋 C# 6.0
因應越來越複雜的C#語言與日漸龐大的開發社群,作者歸納了50種撰寫更好程式的方法,協助讀者撰寫出堅實、高效率、高性能C# 6.0程式。本書新版所提供的新方案包括善用泛型與LINQ,以及專門一章討論例外處理的最佳做法。
清楚、務實、專家秘訣與實用的範例程式,讓眾多開發者對Effective C#愛不釋手。憑藉著豐富的C#經驗,作者提供了C#語言與.NET環境中,從資源管理到多核支援的各種問題解決方案,以及如何避開常見的陷阱。讀者可學習到在多種選項下如何選擇最有效的解決方法,與如何撰寫容易維護及改善的程式碼。Wagner解釋了以下條目的原因與做法:
‧偏好隱含型別的區域變數(見方法1)
‧以內插字串取代string.Format()(見方法4)
‧以delegate表達callback(見方法7)
‧善用.NET的資源管理(見方法11)
‧定義最少且足夠的泛型限制(見方法18)
‧使用執行期型別檢查特化通用演算法(見方法19)
‧以delegate定義方法的型別參數限制(見方法23)
‧以擴充方法規範最小界面合約(見方法27)
‧建構sequence的可組合API(見方法31)
‧action、predicate、以及函式與迭代的解耦(見方法32)
‧偏好lambda表示式的方法(見方法38)
‧區別提前與延後執行(見方法40)
‧避免抓取高成本的資源(見方法41)
‧使用例外回報方法合約失敗(見方法45)
‧利用例外慣例的副作用(見方法50)
如果你已經是成功的C#程式設計師,本書將讓你晉身為頂尖高手。
目錄
前言
第1章 C# 語言慣用語法
做法01 偏好隱含型別的區域變數
做法02 偏好 readonly 而非 const
做法03 偏好 is 或 as 運算子而非型別轉換
做法04 以內插字串取代 string.Format()
做法05 對文化特定字串偏好 FormattableString
做法06 避免字串型別 API
做法07 以 delegate 表示 callback
做法08 對事件叫用使用空條件運算子
做法09 減少 boxing 與 unboxing
做法10 只對基底類別更新使用 new 修飾詞
第2章 .NET 資源管理
做法11 認識 .NET 資源管理
做法12 偏好成員初始化程序而非指派陳述
做法13 對靜態類別成員進行適當的初始化
做法14 減少重複的初始化邏輯
做法15 避免建構不必要的物件
做法16 絕不在建構元中呼叫虛擬函式
做法17 實作標準的 Dispose 模式
第3章 使用泛型
做法18 定義最少與足夠的約束
做法19 使用執行期型別檢查特化泛型演算法
做法20 以 IComparable 與 IComparer 實作排序關係
做法21 建構支援 Disposable 型別參數的泛型類別
做法22 支援泛型的共變數與反變數
做法23 使用 delegate 定義型別參數的方法約束
做法24 勿於基底類別或界面建構泛型特化
做法25 偏好泛型方法,除非型別參數是實例欄位
做法26 除泛型界面外還要實作傳統界面
做法27 以擴充方法加入最少的界面合約
做法28 以擴充方法加強建構型別
第4章 使用LINQ
做法29 偏好以 Iterator 方法回傳集合
做法30 偏好查詢語法而非廻圈
做法31 為序列建構可組合 API
做法32 從動作、述詞與函式中解耦迭代
做法33 被請求時產生序列項目
做法34 使用函式參數解耦
做法35 不要過載擴充方法
做法36 認識查詢表示式如何對應方法呼叫
做法37 在查詢中偏好惰性求值而非積極求值
做法38 偏好 lambda 表示式而非方法
做法39 避免在函式與動作中拋出例外
做法40 區分提前與延遲執行
做法41 避免捕捉昂貴的資源
做法42 區分 IEnumerable 與 IQueryable 資料來源
做法43 使用 Single() 與 First() 以強制查詢的語意結果
做法44 避免修改限界變數
第5章 例外的最佳做法
做法45 以例外回報方法約定失敗
做法46 以 using 與 try/final 清理資源
做法47 建構完整的應用程式專屬例外類別
做法48 偏好強例外保證
做法49 偏好例外過濾而非 catch 與重新拋出
做法50 利用例外過濾的副作用
索引
前言
第1章 C# 語言慣用語法
做法01 偏好隱含型別的區域變數
做法02 偏好 readonly 而非 const
做法03 偏好 is 或 as 運算子而非型別轉換
做法04 以內插字串取代 string.Format()
做法05 對文化特定字串偏好 FormattableString
做法06 避免字串型別 API
做法07 以 delegate 表示 callback
做法08 對事件叫用使用空條件運算子
做法09 減少 boxing 與 unboxing
做法10 只對基底類別更新使用 new 修飾詞
第2章 .NET 資源管理
做法11 認識 .NET 資源管理
做法12 偏好成員初始化程序而非指派陳述
做法13 對靜態類別成員進...
購物須知
關於二手書說明:
商品建檔資料為新書及二手書共用,因是二手商品,實際狀況可能已與建檔資料有差異,購買二手書時,請務必檢視商品書況、備註說明及書況影片,收到商品將以書況影片內呈現為準。若有差異時僅可提供退貨處理,無法換貨或再補寄。
商品版權法律說明:
TAAZE 單純提供網路二手書託售平台予消費者,並不涉入書本作者與原出版商間之任何糾紛;敬請各界鑒察。
退換貨說明:
二手書籍商品享有10天的商品猶豫期(含例假日)。若您欲辦理退貨,請於取得該商品10日內寄回。
二手影音商品(例如CD、DVD等),恕不提供10天猶豫期退貨。
二手商品無法提供換貨服務,僅能辦理退貨。如須退貨,請保持該商品及其附件的完整性(包含書籍封底之TAAZE物流條碼)。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱
退換貨原則、
二手CD、DVD退換貨說明。