Effective C#:改善C#代碼的50個有效方法(原書第3版)
內容描述
本書分為5個章節,第1章介紹一些常見的語言結構,它們是開發者手頭必備的工具,無論創建什麽樣的類型與算法,都離不開它們;第2章介紹一些設計習慣,告訴你應該怎樣把代碼寫得與托管環境相協調;第3章講解怎樣用泛型取代System.Object以及強制類型轉換,並討論一些高級技術,如約束、泛型特化、方法約束以及向後兼容等;第4章講解LINQ、查詢語法以及與之相關的語言特性,包括什麽時候運用擴展方法把協定與實現相分離、怎樣有效地使用閉包以及如何編寫匿名類型等;第5章指引你把C#程序中的異常與錯誤處理好。
目錄大綱
Contents目錄
本書讚譽
譯者序
前言
第1章C#語言的編程習慣1
第1條:優先使用隱式類型的局部變量1
第2條:考慮用readonly代替const8
第3條:優先考慮is或as運算符,盡量少用強制類型轉換12
第4條:用內插字符串取代string.Format()20
第5條:用FormattableString取代專門為特定區域而寫的字符串24
第6條:不要用表示符號名稱的硬字符串來調用API26
第7條:用委託表示回調28
第8條:用null條件運算符調用事件處理程序31
第9條:盡量避免裝箱與取消裝箱這兩種操作34
第10條:只有在應對新版基類與現有子類之間的衝突時才應該使用new修飾符38
第2章.NET的資源管理42
第11條:理解並善用.NET的資源管理機制42
第12條:聲明字段時,盡量直接為其設定初始值47
第13條:用適當的方式初始化類中的靜態成員50
第14條:盡量刪減重複的初始化邏輯52
第15條:不要創建無謂的對象60
第16條:絕對不 在構造函數里面調用虛函數64
第17條:實現標準的dispose模式67
第3章合理地運用泛型74
第18條:只定義剛好夠用的約束條件76
第19條:通過運行期類型檢查實現特定的泛型算法82
第20條:通過IComparable<T>及IComparer<T>定義順序關係88
第21條:創建泛型類時,總是應該給實現了IDisposable的類型參數提供支持95
第22條:考慮支持泛型協變與逆變98
第23條:用委託要求類型參數必須
提供某種方法104
第24條:如果有泛型方法,就不要
再創建針對基類或接口的
重載版本110
第25條:如果不需要把類型參數所
表示的對象設為實例字段,
那麼應該優先考慮創建泛
型方法,而不是泛型類114
第26條:實現泛型接口的同時,還
應該實現非泛型接口118
第27條:只把必備的契約定義在接
口中,把其他功能留給擴
展方法去實現124
第28條:考慮通過擴展方法增強已
構造類型的功能128
第4章合理地運用LINQ131
第29條:優先考慮提供迭代器方法,
而不要返回集合131
第30條:優先考慮通過查詢語句來
編寫代碼,而 要使用循環
語句137
第31條:把針對序列的API設計得
更加易於拼接142
第32條:將迭代邏輯與操作、謂詞
及函數解耦149
第33條:等真正用到序列中的元素
時再去生成153
第34條:考慮通過函數參數來放鬆
耦合關係155
第35條:絕對不要重載擴展方法162
第36條:理解查詢表達式與方法調
用之間的映射關係165
第37條:盡量採用惰性求值的方式
來查詢,而不要及早求值177
第38條:考慮用lambda表達式來
代替方法182
第39條:不要在Func與Action中
拋出異常186
第40條:掌握儘早執行與延遲執行
之間的區別188
第41條:不要把開銷較大的資源捕
獲到閉包中193
第42條:注意IEnumerable與
IQueryable形式的數據
源之間的區別206
第43條:用Single()及First()
來明確地驗證你對查詢結果
所做的假設211
第44條:不要修改綁定變量214
第5章合理地運用異常220
第45條:考慮在方法約定遭到違背
時拋出異常220
第46條:利用using與try/finally
來清理資源224
第47條:專門針對應用程序創建異常231
第48條:優先考慮做出強異常保證237
第49條:考慮用異常篩選器來改寫
先捕獲異常再重新拋出的
邏輯244
第50條:合理利用異常篩選器的副
作用來實現某些效果248
中英文詞彙對照表252
作者介紹
Bill Wagner,世界知名的C#專家,也是ECMA C#標準委員會成員。
他在Humanitarian Toolbox項目中擔任主管,
並榮獲微軟公司.NET MVP稱號長達11年,
最近開始在.NET Foundation AdvisoryCouncil任職。
Wagner在工作中與各種規模的公司合作,
幫助這些創業公司或企業改進軟件開發流程,並培養軟件開發團隊。
目前,他是微軟.NET核心內容團隊的員工,
寫過很多與C#語言及.NET框架有關的學習資料。
他擁有伊利諾伊大學厄巴納-尚佩恩分校計算機科學專業的學士學位。
比爾·瓦格納(Bill Wagner),世界知名的C#專家,
也是ECMA C#標準委員會成員。
他在Humanitarian Toolbox項目中擔任主管,
並榮獲微軟公司.NET MVP稱號長達11年,
最近開始在.NET Foundation AdvisoryCouncil任職。
Wagner在工作中與各種規模的公司合作,
幫助這些創業公司或企業改進軟件開發流程,並培養軟件開發團隊。
目前,他是微軟.NET核心內容團隊的員工,
寫過很多與C#語言及.NET框架有關的學習資料。
他擁有伊利諾伊大學厄巴納-尚佩恩分校計算機科學專業的學士學位。