Effective C# 中文版 | 寫出良好 C# 程式的 50個具體做法, 3/e (Effective C# : 50 Specific Ways to Improve Your C#(Covers C# 6.0), 3/e)

Bill Wagner 著、楊尊一 譯

立即出貨 (約庫存 > 10)

  • 9789864763481 b1
  • 9789864763481 b2
  • 9789864763481 b3
  • 9789864763481 b4
  • 9789864763481 b5
  • 9789864763481 b6
  • 9789864763481 b7
  • 9789864763481 b8
  • 9789864763481 b9
9789864763481 b1

買這商品的人也買了...

產品描述

涵蓋 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#程式設計師,本書將讓你晉身為頂尖高手。

作者簡介

Bill Wagner 曾經為Microsoft設計.NET學習教材,是最重要的C#專家之一,也是C# Standards Committee的成員。他是Humanitarian Toolbox的總裁,同時任職於 .NET Foundation Advisory Council與Technical Steering Committees。曾經在新創與大企業工作過,負責改善開發程序與團隊。同時是位國際知名作者,著作包括本書的前兩個版本以及More Effective C#。具有University of Illinois的資工學士學位。

目錄大綱

前言

第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 利用例外過濾的副作用

索引