書籍簡(jiǎn)介:
在本書中,世界的.NET專家Bill Wagner介紹了用于寫出健壯且容易完成的C# 7.0代碼的50條中階至高階技巧,反映了C#語言及其開發(fā)社區(qū)的發(fā)展,可幫助讀者解決每日編程工作中可能遇到的問題。
作者簡(jiǎn)介:
[美] 比爾·瓦格納(Bill Wagner)
出版日期:
2019年03月
章節(jié)目錄:
譯者序
前言
第1章 處理各種類型的數(shù)據(jù) / 1
第1條:使用屬性而不是可直接訪問的數(shù)據(jù)成員 / 1
第2條:盡量采用隱式屬性來表示可變的數(shù)據(jù) / 7
第3條:盡量把值類型設(shè)計(jì)成不可變的類型 / 11
第4條:注意值類型與引用類型之間的區(qū)別 / 16
第5條:確保 0 可以當(dāng)成值類型的有效狀態(tài)使用 / 21
第6條:確保屬性能夠像數(shù)據(jù)那樣運(yùn)用 / 25
第7條:用元組來限制類型的作用范圍 / 30
第8條:在匿名類型中定義局部函數(shù) / 35
第9條:理解相等的不同概念及它們之間的關(guān)系 / 40
第10條:留意GetHashCode()方法的使用陷阱 / 49
第2章 API設(shè)計(jì) / 57
第11條:不要在API中提供轉(zhuǎn)換運(yùn)算符 / 57
第12條:盡量用可選參數(shù)來取代方法重載 / 61
第13條:盡量縮減類型的可見范圍 / 65
第14條:優(yōu)先考慮定義并實(shí)現(xiàn)接口,而不是繼承 / 69
第15條:理解接口方法與虛方法之間的區(qū)別 / 77
第16條:用Event模式來實(shí)現(xiàn)通知功能 / 82
第17條:不要把類的內(nèi)部對(duì)象通過引用返回給外界 / 87
第18條:優(yōu)先考慮重寫相關(guān)的方法,而不是創(chuàng)建事件處理程序 / 91
第19條:不要重載基類中定義的方法 / 94
第20條:了解事件機(jī)制為何會(huì)提升對(duì)象在運(yùn)行期的耦合程度 / 98
第21條:不要把事件聲明成virtual / 100
第22條:盡量把重載方法創(chuàng)建得清晰、簡(jiǎn)潔而完備 / 106
第23條:讓 partial類的構(gòu)造函數(shù)、mutator方法和事件處理程序調(diào)用適當(dāng)?shù)膒artial方法 / 112
第24條:盡量不要實(shí)現(xiàn)ICloneable接口,以便留出更多的設(shè)計(jì)空間 / 117
第25條:數(shù)組類型的參數(shù)應(yīng)該用params加以修飾 / 122
第26條:在迭代器與異步方法中定義局部函數(shù),以便盡早地報(bào)錯(cuò) / 126
第3章 基于任務(wù)的異步編程 / 131
第27條:使用異步方法執(zhí)行異步工作 / 131
第28條:不要編寫返回值類型為void的異步方法 / 136
第29條:不要把同步方法與異步方法組合起來使用 / 141
第30條:使用異步方法以避免線程分配和上下文切換 / 146
第31條:避免不必要的上下文編組 / 147
第32條:通過Task對(duì)象來安排異步工作 / 151
第33條:考慮實(shí)現(xiàn)任務(wù)取消協(xié)議 / 157
第34條:緩存泛型異步方法的返回值 / 164
第4章 并行處理 / 167
第35條:了解PLINQ是怎樣實(shí)現(xiàn)并行算法的 / 167
第36條:編寫并行算法時(shí)要考慮異常狀況 / 179
第37條:優(yōu)先使用線程池而不是創(chuàng)建新的線程 / 185
第38條:考慮使用BackgroundWorker在線程之間通信 / 190
第39條:學(xué)會(huì)在XAML環(huán)境下執(zhí)行跨線程調(diào)用 / 194
第40條:首先考慮用lock()實(shí)現(xiàn)同步 / 202
第41條:盡量縮減鎖定范圍 / 209
第42條:不要在加了鎖的區(qū)域內(nèi)調(diào)用未知的方法 / 212
第5章 動(dòng)態(tài)編程 / 217
第43條:了解動(dòng)態(tài)編程的優(yōu)點(diǎn)及缺點(diǎn) / 217
第44條:通過動(dòng)態(tài)編程技術(shù)更好地運(yùn)用泛型參數(shù)的運(yùn)行期類型 / 226
第45條:使用DynamicObject和IDynamicMetaObjectProvider實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)的動(dòng)態(tài)類型 / 229
第46條:學(xué)會(huì)正確使用Expression API / 240
第47條:盡量減少公有API中的動(dòng)態(tài)對(duì)象 / 246
第6章 加入全球C#社區(qū) / 253
第48條:最流行的寫法不一定最合適 / 253
第49條:與大家一起制定規(guī)范并編寫代碼 / 255
第50條:考慮用分析器自動(dòng)檢查代碼質(zhì)量 / 256
中英文詞匯對(duì)照表 / 258
封面圖: