作 者:[美] 比爾·瓦格納(Bill Wagner) 著 愛飛翔 譯
定 價:79
出 版 社:機械工業出版社
出版日期:2019年03月01日
頁 數:257
裝 幀:平裝
ISBN:9787111620716
●譯者序前言章 處理各種類型的數據 / 1條:使用屬性而不是可直接訪問的數據成員 / 1第2條:盡量采用隱式屬性來表示可變的數據 / 7第3條:盡量把值類型設計成不可變的類型 / 11第4條:注意值類型與引用類型之間的區別 / 16第5條:確保 0 可以當成值類型的有效狀態使用 / 21第6條:確保屬性能夠像數據那樣運用 / 25第7組來類型的作用範圍 / 30第8條:在匿名類型中定義局部函數 / 35第9條:理解相等的不同概念及它們之間的關繫 / 400條:留意GetHashCode()方法的使用陷阱 / 49第2章 API設計 / 571條:不要在API中提供轉換運算符 / 572條:盡量用可選參數來取代方法重載 / 613條:盡量縮減類型的可見範圍 / 654條:優先考慮定義並實現接口,而不是繼承 / 695條:理解接口方法與虛方法之間的區別 / 776條:用Event模式來實現通知功能 / 827條:不要把類的內部對像通過引用返回給外界 / 878條:優先考慮重寫相關的方法,而不是創建事件處理程序 / 919條:不要重載基類中定義的方法 / 94第20條:了解事件機制為何會提升對像在運行期的耦合程度 / 98第21條:不要把事件聲明成virtual / 100第22條:盡量把重載方法創建得清晰、簡潔而完備 / 106第23條:讓 partial類的構造函數、mutator方法和事件處理程序調用適當的partial方法 / 112第24條:盡量不要實現ICloneable接口,以便留出更多的設計空間 / 117第25條:數組類型的參數應該用params加以修飾 / 122第26條:在迭代器與異步方法中定義局部函數,以便盡早地報錯 / 126第3章 基於任務的異步編程 / 131第27條:使用異步方法執行異步工作 / 131第28條:不要編寫返回值類型為void的異步方法 / 136第29條:不要把同步方法與異步方法組合起來使用 / 141第30條:使用異步方法以避免線程分配和上下文切換 / 146第31條:避免不必要的上下文編組 / 147第32條:通過Task對像來安排異步工作 / 151第33條:考慮實現任務取消協議 / 157第34條:緩存泛型異步方法的返回值 / 164第4章 並行處理 / 167第35條:了解PLINQ是怎樣實現並行算法的 / 167第36條:編寫並行算法時要考慮異常狀況 / 179第37條:優先使用線程池而不是創建新的線程 / 185第38條:考慮使用BackgroundWorker在線程之間通信 / 190第39條:學會在XAML環境下執行跨線程調用 / 194第40條:首先考慮用lock()實現同步 / 202第41條:盡量縮減鎖定範圍 / 209第42條:不要在加了鎖的區域內調用未知的方法 / 212第5章 動態編程 / 217第43條:了解動態編程的優點及缺點 / 217第44條:通過動態編程技術更好地運用泛型參數的運行期類型 / 226第45條:使用DynamicObject和IDynamicMetaObjectProvider實現數據驅動的動態類型 / 229第46條:學會正確使用Expression API / 240第47條:盡量減少公有API中的動態對像 / 246第6章 加入全球C#社區 / 253第48條: 的寫法不一定最合適 / 253第49條:與大家一起制定規範並編寫代碼 / 255第50條:考慮用分析器自動檢查代碼質量 / 256中英文詞彙對照表 / 258
在本書中,世界的.NET專家Bill Wagner介紹了用於寫出健壯且容易完成的C# 7.0代碼的50條中階至高階技巧,反映了C#語言及其開發社區的發展,可幫助讀者解決每日編程工作中可能遇到的問題。
[美] 比爾·瓦格納(Bill Wagner) 著 愛飛翔 譯
比爾?瓦格納(Bill Wagner),世界知名的C#專家,也是ECMA C#標準委員會成員。他在Humanitarian Toolbox項目中擔任主管,並榮獲微軟公司.NET MVP稱號長達11年,很近開始在.NET Foundation AdvisoryCouncil任職。Wagner在工作中與各種規模的公司合作,幫助這些創業公司或企業改進軟件開發流程,並培養軟件開發團隊。目前,他是微軟.NET核心內容團隊的員工,寫過很多與C#語言及.NET框架有關的學習資料。他擁有伊利諾伊大學阨巴納-尚佩恩分校計算機科學專業的學士學位。
章處理各種類型的數據C#語言原本是設計給面向對像的開發者使用的,這種開發方式會把數據與功能合起來處理。在C#逐漸成熟的過程中,它又添加了一些新的編程範式,以便支持其他一些常用的開發方式。其中有一種開發方式強調把數據存儲方法與數據操作方法分開,這種方式隨著分布式繫統而興起,此類繫統中的應用程序分成多個小的服務,每個服務隻實現一項功能,或者隻實現一組相互聯繫的功能。如果要把數據的存儲與操作分開,那麼開發者就得有一些新的編程技術可供使用,正是這些需求促使C#語言添加了與之相應的一些特性。本章會介紹怎樣把數據本身與操縱或處理該數據的方法分開。此處所說的數據不一定都是對像,也有可能是函數或被動的數據容器。條:使用屬性而不是可直接訪問的數據成員屬性一直是C#語言的特色,目前的屬性機制比C#剛引入它的時候更為完備,這使得開發者能夠通過屬性實現很多功能,例如等
C#語言一直在進化、演變,使用這門語言的開發者社區也是如此。越來越多的程序員都選用C#作為自己在職業生涯中首次接觸的語言,他們不會受到其他語言的影響。反之,有些開發者是先使用了幾年以C語言為基礎的其他語言,然後纔轉向C#的,這些開發者可能會受到早前那門語言的影響。然而,無論是始終使用C#的人,還是從其他語言轉過來的人,都需要培養很多新的習慣,以適應C#語言近年來的變化。編譯器開源之後,C#的創新速度大增,準備添加到語言中的新特性也會交給整個開發者社區來評審,而不像原來那樣隻由少數語言專家評審。此外,開發者社區還可以參與新特性的設計工作。架構與部署方面的變化也要求C#開發者改變早前的編程習慣。拼裝微服務(microservice)、構建分布式程序、分離算法與數據等做法,在當前的應用程序開發工作中已經很常見了。因此,C#語言也開始針對這些開發習慣做出調整。筆者在安排本書第2版的內容時,考慮到了等