出版時(shí)間:201004 出版社:人民郵電出版社 作者:Krzysztof Cwalina,,Brad Abrams 頁(yè)數(shù):370 譯者:葛子昂
Tag標(biāo)簽:無(wú)
前言
從Framework Design Guidelines的第一版出版到現(xiàn)在,轉(zhuǎn)眼間已經(jīng)過(guò)去了四年。四年前,.NET框架2.0和Visual Studio 2005剛剛發(fā)布。之后我們先后迎來(lái)了.NET框架3.0、.NET框架3.5和Visual Studio 2008,而現(xiàn)在我們又即將迎來(lái).NET框架4.0和Visual Studio 2010。事實(shí)上,在我忙于翻譯本書(shū)的時(shí)候,也正是我忙于Visual Studio 2010的開(kāi)發(fā)和收尾工作的時(shí)候。本書(shū)保留了第一版中的大部分內(nèi)容,對(duì)原有內(nèi)容進(jìn)行了適當(dāng)?shù)母?。這充分證明了書(shū)中的設(shè)計(jì)規(guī)范是經(jīng)得起時(shí)間考驗(yàn)的,而這也正是它的核心價(jià)值所在。除此之外,本書(shū)還增加了許多新的內(nèi)容,包括序列化、LINQ、依賴屬性等等,從而涵蓋了.NET框架3.0和.NET框架3.5中的核心特性。在過(guò)去的四年中,無(wú)論是我對(duì)技術(shù)的理解還是對(duì)語(yǔ)言的把握,都有了相當(dāng)?shù)奶岣?,這一點(diǎn)將在書(shū)中得以體現(xiàn)。第一版的讀者可能會(huì)發(fā)現(xiàn),中文第二版不僅更新了英文版中更新的那些部分,同時(shí)還對(duì)第一版已有的內(nèi)容進(jìn)行了修訂和潤(rùn)色。我相信本書(shū)不僅是《.NET設(shè)計(jì)規(guī)范(第2版)》,而且是一本更好的《.NET設(shè)計(jì)規(guī)范》。雖然我竭盡所能力求譯文的準(zhǔn)確和流暢,但鑒于時(shí)間和精力有限,難免會(huì)有翻譯不當(dāng)甚至是錯(cuò)誤之處。為此我建立了一份網(wǎng)上勘誤表,如果讀者發(fā)現(xiàn)任何錯(cuò)誤,都請(qǐng)通過(guò)該網(wǎng)頁(yè)與我聯(lián)系,一旦確認(rèn)我會(huì)立即將其更新到勘誤表中。我要感謝本書(shū)的編輯丁曉昀對(duì)我的理解和支持,我們之間的合作非常愉快。我還要感謝我的同事吳宇進(jìn)、田超、唐友、張羿和王彩霞,他們?cè)诜泵Φ墓ぷ髦鄬忛喿g稿,發(fā)現(xiàn)了不少難以覺(jué)察的問(wèn)題,并提出了許多寶貴的意見(jiàn)和建議,從而使得本書(shū)的質(zhì)量更上一層樓。最后,我要感謝我的妻兒,他們的支持和鼓勵(lì),是我前進(jìn)的動(dòng)力。
內(nèi)容概要
數(shù)千名微軟精銳開(kāi)發(fā)人員的經(jīng)驗(yàn)和智慧,最終濃縮在這本設(shè)計(jì)規(guī)范之中。與上一版相比,書(shū)中新增了許多評(píng)注,解釋了相應(yīng)規(guī)范的背景和歷史,從中你能聆聽(tīng)到微軟技術(shù)大師Anders Hejlsberg、Jeffrey Richter和Paul Vick等的聲音,讀來(lái)令人興味盎然?! ”緯?shū)雖然是針對(duì).NET平臺(tái)上的框架設(shè)計(jì)的,但對(duì)其他平臺(tái)的框架設(shè)計(jì)同樣具有借鑒意義。新版根據(jù).NET Framework 3.0和3.5的新特性做了全面更新,主要關(guān)注的是直接影響框架可編程能力的設(shè)計(jì)問(wèn)題。遵守這些規(guī)范對(duì)于使用.NET Framework創(chuàng)建高質(zhì)量的應(yīng)用程序至關(guān)重要?! ”緯?shū)提供配套光盤(pán),內(nèi)含Designing .NET Class Libraries等13個(gè)演講視頻。此外,光盤(pán)還包括.NET Framework類(lèi)和組件設(shè)計(jì)指南、API規(guī)范樣例以及其他有用的資源和工具。
作者簡(jiǎn)介
作者:(美國(guó))克瓦林納(Krzysztof Cwalina) (美國(guó))艾布拉姆斯(Brad Abrams) 譯者:葛子昂Krzysztof Cwalina,微軟公司.NET Framework開(kāi)發(fā)組項(xiàng)目經(jīng)理。他為.NET Framework設(shè)計(jì)了多個(gè)API。還開(kāi)發(fā)了FxCop等框架開(kāi)發(fā)工具。目前。他正致力于在微軟內(nèi)部開(kāi)發(fā)推廣設(shè)計(jì)規(guī)范,將其應(yīng)用到.NET Framework中。同時(shí)負(fù)責(zé)核心.NET Framework API的交付。Brad Abrams,微軟公司CLR開(kāi)發(fā)組和.NET Framework開(kāi)發(fā)組的創(chuàng)始人之一,目前是項(xiàng)目經(jīng)理主管。他參與制定了CLS、.NET Framework設(shè)計(jì)規(guī)范以及ECMA/ISOCLI標(biāo)準(zhǔn)中程序庫(kù)標(biāo)準(zhǔn),著有Programming in the .NET Environment、.NET Framework Standard Library Annotated Reference(卷1和卷2)等書(shū)。葛子昂,畢業(yè)于南京理工大學(xué)計(jì)算機(jī)系?,F(xiàn)任微軟中國(guó)研發(fā)集團(tuán)服務(wù)器及開(kāi)發(fā)工具事業(yè)部的軟件開(kāi)發(fā)主管。目前正從事Windows Workflow Foundation(WF)的相關(guān)開(kāi)發(fā)。致力于為WF開(kāi)發(fā)人員提供方便高效的開(kāi)發(fā)工具。之前曾長(zhǎng)期從事Windows Communication Foundation(WCF)產(chǎn)品的相關(guān)研發(fā)。加入微軟前先后任職于育碧電腦軟件有限公司和旭上電子有限公司,從事計(jì)算機(jī)游戲及圖形處理器的開(kāi)發(fā)。具有豐富的開(kāi)發(fā)經(jīng)驗(yàn)。出版有譯作《.NET設(shè)計(jì)規(guī)范》、《Windows核心編程(第5版)》、《設(shè)計(jì)模式沉思錄》。
書(shū)籍目錄
第1章 概述 11.1 精心設(shè)計(jì)的框架所具備的品質(zhì) 21.1.1 精心設(shè)計(jì)的框架是簡(jiǎn)單的 21.1.2 精心設(shè)計(jì)的框架設(shè)計(jì)代價(jià)高 31.1.3 精心設(shè)計(jì)的框架充滿利弊權(quán)衡 41.1.4 精心設(shè)計(jì)的框架應(yīng)該借鑒過(guò)去的經(jīng)驗(yàn) 41.1.5 精心設(shè)計(jì)的框架要考慮未來(lái)發(fā)展 41.1.6 精心設(shè)計(jì)的框架應(yīng)具有良好的集成性 51.1.7 精心設(shè)計(jì)的框架是一致的 5第2章 框架設(shè)計(jì)基礎(chǔ) 72.1 漸進(jìn)框架 92.2 框架設(shè)計(jì)的基本原則 122.2.1 圍繞場(chǎng)景進(jìn)行設(shè)計(jì)的原則 122.2.2 低門(mén)檻原則 182.2.3 自說(shuō)明對(duì)象模型原則 222.2.4 分層架構(gòu)原則 282.3 小結(jié) 30第3章 命名規(guī)范 313.1 大小寫(xiě)約定 313.1.1 標(biāo)識(shí)符的大小寫(xiě)規(guī)則 323.1.2 首字母縮寫(xiě)詞的大小寫(xiě) 343.1.3 復(fù)合詞和常用術(shù)語(yǔ)的大小寫(xiě) 363.1.4 是否區(qū)分大小寫(xiě) 373.2 通用命名約定 383.2.1 單詞的選擇 383.2.2 使用單詞縮寫(xiě)和首字母縮寫(xiě)詞 403.2.3 避免使用編程語(yǔ)言特有的名字 413.2.4 為已有API的新版本命名 433.3 程序集和DLL的命名 453.4 名字空間的命名 463.5 類(lèi)、結(jié)構(gòu)和接口的命名 503.5.1 泛型類(lèi)型參數(shù)的命名 533.5.2 常用類(lèi)型的命名 533.5.3 枚舉類(lèi)型的命名 543.6 類(lèi)型成員的命名 563.6.1 方法的命名 563.6.2 屬性的命名 573.6.3 事件的命名 583.6.4 字段的命名 593.7 參數(shù)的命名 603.8 資源的命名 613.9 小結(jié) 62第4章 類(lèi)型設(shè)計(jì)規(guī)范 634.1 類(lèi)型和名字空間 654.2 類(lèi)和結(jié)構(gòu)之間的選擇 704.3 類(lèi)和接口之間的選擇 734.4 抽象類(lèi)的設(shè)計(jì) 794.5 靜態(tài)類(lèi)的設(shè)計(jì) 804.6 接口的設(shè)計(jì) 824.7 結(jié)構(gòu)的設(shè)計(jì) 844.8 枚舉的設(shè)計(jì) 864.8.1 標(biāo)記枚舉的設(shè)計(jì) 924.8.2 給枚舉添加值 954.9 嵌套類(lèi)型 974.10 類(lèi)型和程序集元數(shù)據(jù) 984.11 小結(jié) 100第5章 成員設(shè)計(jì) 1015.1 成員設(shè)計(jì)的通用規(guī)范 1015.1.1 成員重載 1015.1.2 顯式地實(shí)現(xiàn)接口成員 1075.1.3 屬性和方法之間的選擇 1105.2 屬性的設(shè)計(jì) 1155.2.1 索引屬性的設(shè)計(jì) 1175.2.2 當(dāng)屬性發(fā)生改變時(shí)的通知事件 1195.3 構(gòu)造函數(shù)的設(shè)計(jì) 1215.4 事件的設(shè)計(jì) 1285.5 字段的設(shè)計(jì) 1345.6 擴(kuò)展方法 1365.7 操作符重載 1425.7.1 重載operator== 1465.7.2 類(lèi)型轉(zhuǎn)換操作符 1465.8 參數(shù)的設(shè)計(jì) 1475.8.1 枚舉和布爾參數(shù)之間的選擇 1495.8.2 參數(shù)的驗(yàn)證 1515.8.3 參數(shù)的傳遞 1545.8.4 參數(shù)數(shù)量可變的成員 1565.8.5 指針參數(shù) 1595.9 小結(jié) 161第6章 擴(kuò)展性設(shè)計(jì) 1626.1 擴(kuò)展機(jī)制 1626.1.1 非密封類(lèi) 1626.1.2 受保護(hù)的成員 1646.1.3 事件與回調(diào)函數(shù) 1656.1.4 虛成員 1696.1.5 抽象(抽象類(lèi)型與抽象接口) 1716.2 基類(lèi) 1736.3 密封 1746.4 小結(jié) 177第7章 異常 1787.1 拋出異常 1827.2 為拋出的異常選擇合適的類(lèi)型 1877.2.1 錯(cuò)誤消息的設(shè)計(jì) 1907.2.2 異常處理 1917.2.3 封裝異常 1967.3 標(biāo)準(zhǔn)異常類(lèi)型的使用 1977.3.1 Exception與SystemExcep- tion 1987.3.2 ApplicationException 1987.3.3 InvalidOperationException 1987.3.4 ArgumentException、ArgumentNullException及ArgumentOutOfRange-Exception 1997.3.5 NullReferenceException、IndexOutOfRangeException及AccessViolationException 1997.3.6 StackOverflowException 2007.3.7 OutOfMemoryException 2017.3.8 ComException、SEHException以及ExecutionEngine-Exception 2027.4 自定義異常的設(shè)計(jì) 2027.5 異常與性能 2037.5.1 Tester-Doer模式 2047.5.2 Try-Parse模式 2057.6 小結(jié) 206第8章 使用規(guī)范 2078.1 數(shù)組 2078.2 修飾屬性 2088.3 集合 2118.3.1 集合參數(shù) 2138.3.2 集合屬性與返回值 2148.3.3 數(shù)組與集合之間的選擇 2188.3.4 自定義集合的實(shí)現(xiàn) 2188.4 DateTime和DateTimeOffset 2208.5 ICloneable 2228.6 IComparable與IEquatable 2238.7 IDisposable 2258.8 Nullable 2258.9 Object 2268.9.1 Object.Equals 2268.9.2 Object.GetHashCode 2288.9.3 Object.ToString 2298.10 序列化 2318.10.1 選擇要支持的序列化技術(shù) 2328.10.2 對(duì)數(shù)據(jù)協(xié)定序列化的支持 2338.10.3 對(duì)XML序列化的支持 2378.10.4 對(duì)運(yùn)行時(shí)序列化的支持 2388.11 Uri 2398.12 System.Xml的使用 2418.13 相等性操作符 2428.13.1 值類(lèi)型的相等性操作符 2438.13.2 引用類(lèi)型的相等性操作符 243第9章 常用的設(shè)計(jì)模式 2449.1 聚合組件 2449.1.1 面向組件的設(shè)計(jì) 2459.1.2 因子類(lèi)型 2489.1.3 聚合組件規(guī)范 2499.2 Async模式 2519.2.1 選擇合適的Async模式 2519.2.2 經(jīng)典Async模式 2539.2.3 Async模式的基本實(shí)現(xiàn)樣例 2569.2.4 基于事件的Async模式 2579.2.5 對(duì)輸出參數(shù)和引用參數(shù)的支持 2599.2.6 對(duì)取消操作的支持 2609.2.7 對(duì)進(jìn)度報(bào)告的支持 2609.2.8 對(duì)增量結(jié)果的支持 2629.3 依賴屬性 2639.3.1 依賴屬性的設(shè)計(jì) 2649.3.2 附加依賴屬性的設(shè)計(jì) 2669.3.3 依賴屬性的驗(yàn)證 2679.3.4 依賴屬性的改變通知 2689.3.5 依賴屬性的強(qiáng)制賦值 2699.4 Dispose模式 2699.4.1 基本Dispose模式 2729.4.2 可終結(jié)類(lèi)型 2779.5 Factory模式 2819.6 對(duì)LINQ的支持 2859.6.1 LINQ概要 2859.6.2 支持LINQ的幾種方法 2869.6.3 通過(guò)IEnumerable來(lái)支持LINQ 2879.6.4 通過(guò)IQueryable來(lái)支持LINQ 2879.6.5 通過(guò)Query模式來(lái)支持LINQ 2889.7 Optional Feature模式 2919.8 Simulated Covariance模式 2949.9 Template Method模式 2999.10 超時(shí) 3019.11 可供XAML使用的類(lèi)型 3039.12 結(jié)束語(yǔ) 305附錄A C#編程風(fēng)格約定 306附錄B 通過(guò)FxCop來(lái)實(shí)施設(shè)計(jì)規(guī)范 313附錄C API規(guī)格書(shū)樣例 343術(shù)語(yǔ)表 350推薦讀物 354索引 356
章節(jié)摘錄
插圖:如果框架的設(shè)計(jì)者能夠站在其使用者背后解釋?xiě)?yīng)該如何使用框架,那么規(guī)范就沒(méi)有存在的必要了。規(guī)范為我們這些框架設(shè)計(jì)者提供了一套工具,可以在自己和使用框架的開(kāi)發(fā)者之間形成一種共同語(yǔ)言。例如,將一個(gè)操作定義為屬性而不是方法可以向用戶傳達(dá)重要的信息,告訴他們應(yīng)該如何使用該操作。在PC時(shí)代的早期,開(kāi)發(fā)應(yīng)用程序的主要工具是程序設(shè)計(jì)語(yǔ)言編譯器、少量的標(biāo)準(zhǔn)程序庫(kù)以及未經(jīng)封裝的操作系統(tǒng)應(yīng)用程序編程接口(API),這些是很基本的底層編程工具。即使開(kāi)發(fā)人員用如此基本的工具構(gòu)建應(yīng)用程序,重復(fù)的代碼也會(huì)越來(lái)越多,而通過(guò)用更高層的API對(duì)代碼進(jìn)行抽象,可以消除這種重復(fù)。操作系統(tǒng)供應(yīng)商們注意到提供此類(lèi)更高層的API,可以使開(kāi)發(fā)人員更容易地為他們的系統(tǒng)開(kāi)發(fā)應(yīng)用程序。能夠在該系統(tǒng)上運(yùn)行的應(yīng)用程序的數(shù)量會(huì)隨之增加,進(jìn)而使得系統(tǒng)對(duì)最終用戶更具有吸引力,因?yàn)樽罱K用戶需要多種多樣的應(yīng)用程序。此外,獨(dú)立的工具及組件供應(yīng)商也很快意識(shí)到了由提升API的抽象層次所帶來(lái)的商機(jī)。與此同時(shí),工業(yè)界開(kāi)始逐漸地接受了面向?qū)ο笤O(shè)計(jì)以及它所強(qiáng)調(diào)的擴(kuò)展性和重用性①。當(dāng)可重用程序庫(kù)的供應(yīng)商為了開(kāi)發(fā)其高API而采納OOP(Object.OrientedProgramming,面向?qū)ο缶幊?時(shí),就產(chǎn)生了框架(framework)的概念。自從有了框架,開(kāi)發(fā)人員不再需要從頭開(kāi)始編寫(xiě)應(yīng)用程序??蚣軙?huì)提供所需的大部分部件,這些部件經(jīng)過(guò)開(kāi)發(fā)人員的定制和拼裝②,就成為了最終的應(yīng)用程序。
媒體關(guān)注與評(píng)論
“本書(shū)第1版出版以后.立即成為整個(gè)Mono社區(qū)傳誦的經(jīng)典……這一版彌補(bǔ)了上一版的很多不足,而眾多參與規(guī)范制定的核心.NET架構(gòu)師及頂尖程序員所做的評(píng)注也極大地豐富了本書(shū)的內(nèi)涵?!? ——Miguel de Icaza.GNOME和Mono項(xiàng)目創(chuàng)建者 “本書(shū)絕對(duì)是所有.NET開(kāi)發(fā)人員的必讀之作。它總結(jié)了.NET本身設(shè)計(jì)和開(kāi)發(fā)過(guò)程中獲得的經(jīng)驗(yàn)和教訓(xùn),不僅使你對(duì).NET能夠知其所以然。還能極大地幫助你更高效地使用.NET類(lèi)庫(kù)?!? ——Jeffrey Richter。微軟技術(shù)大師,名著《windows核心編程》作者
編輯推薦
《.NET設(shè)計(jì)規(guī)范:約定、慣用法與模式(第2版)》:數(shù)千名微軟精銳開(kāi)發(fā)人員的經(jīng)驗(yàn)和智慧。最終濃縮在這本設(shè)計(jì)規(guī)范之中。與上一版相比。書(shū)中新增了許多評(píng)注.解釋了相應(yīng)規(guī)范的背景和歷史,從中你能聆聽(tīng)到微軟技術(shù)大師Anders H ejIsberg、Jeffrey Richter和PauI Vick等的聲音,讀來(lái)令人興趣盎然。欲罷不能?!?NET設(shè)計(jì)規(guī)范:約定、慣用法與模式(第2版)》雖然是針對(duì).NET平臺(tái)上的框架設(shè)計(jì)的,但對(duì)其他平臺(tái)的框架設(shè)計(jì)同樣具有借鑒意義。新版根據(jù).NET Framework 3.O和3.5的新特性做了全面更新。主要關(guān)注的是直接影響框架可編程能力的設(shè)計(jì)問(wèn)題。遵守這些規(guī)范對(duì)于使用.NET Framework創(chuàng)建高質(zhì)量的應(yīng)用程序至關(guān)重要。《.NET設(shè)計(jì)規(guī)范:約定、慣用法與模式(第2版)》提供配套光盤(pán),內(nèi)含Designing.NET CIass Librarines等13個(gè)演講視頻(時(shí)長(zhǎng)近13小時(shí))。此外,光盤(pán)還包括.NETFrameworkework類(lèi)和組件設(shè)計(jì)指南、APl規(guī)范樣例以及其他有用的資源和工具。微軟.N ET Framework設(shè)計(jì)組的智慧結(jié)晶,洞悉.NET技術(shù)內(nèi)幕,.N ET開(kāi)發(fā)者的必備圖書(shū)。
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
.NET設(shè)計(jì)規(guī)范 PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版