第一图书网

.NET设计规范

Krzysztof Cwalina,,Brad Abrams 人民邮电出版社
出版时间:

201004  

出版社:

人民邮电出版社  

作者:

Krzysztof Cwalina,,Brad Abrams  

页数:

370  

译者:

葛子昂  

Tag标签:

无  

前言

从Framework Design Guidelines的第一版出版到现在,转眼间已经过去了四年。四年前,.NET框架2.0和Visual Studio 2005刚刚发布。之后我们先后迎来了.NET框架3.0、.NET框架3.5和Visual Studio 2008,而现在我们又即将迎来.NET框架4.0和Visual Studio 2010。事实上,在我忙于翻译本书的时候,也正是我忙于Visual Studio 2010的开发和收尾工作的时候。本书保留了第一版中的大部分内容,对原有内容进行了适当的更新。这充分证明了书中的设计规范是经得起时间考验的,而这也正是它的核心价值所在。除此之外,本书还增加了许多新的内容,包括序列化、LINQ、依赖属性等等,从而涵盖了.NET框架3.0和.NET框架3.5中的核心特性。在过去的四年中,无论是我对技术的理解还是对语言的把握,都有了相当的提高,这一点将在书中得以体现。第一版的读者可能会发现,中文第二版不仅更新了英文版中更新的那些部分,同时还对第一版已有的内容进行了修订和润色。我相信本书不仅是《.NET设计规范(第2版)》,而且是一本更好的《.NET设计规范》。虽然我竭尽所能力求译文的准确和流畅,但鉴于时间和精力有限,难免会有翻译不当甚至是错误之处。为此我建立了一份网上勘误表,如果读者发现任何错误,都请通过该网页与我联系,一旦确认我会立即将其更新到勘误表中。我要感谢本书的编辑丁晓昀对我的理解和支持,我们之间的合作非常愉快。我还要感谢我的同事吴宇进、田超、唐友、张羿和王彩霞,他们在繁忙的工作之余审阅译稿,发现了不少难以觉察的问题,并提出了许多宝贵的意见和建议,从而使得本书的质量更上一层楼。最后,我要感谢我的妻儿,他们的支持和鼓励,是我前进的动力。

内容概要

  数千名微软精锐开发人员的经验和智慧,最终浓缩在这本设计规范之中。与上一版相比,书中新增了许多评注,解释了相应规范的背景和历史,从中你能聆听到微软技术大师Anders Hejlsberg、Jeffrey Richter和Paul Vick等的声音,读来令人兴味盎然。  本书虽然是针对.NET平台上的框架设计的,但对其他平台的框架设计同样具有借鉴意义。新版根据.NET Framework 3.0和3.5的新特性做了全面更新,主要关注的是直接影响框架可编程能力的设计问题。遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。  本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及其他有用的资源和工具。

作者简介

作者:(美国)克瓦林纳(Krzysztof Cwalina) (美国)艾布拉姆斯(Brad Abrams) 译者:葛子昂Krzysztof Cwalina,微软公司.NET Framework开发组项目经理。他为.NET Framework设计了多个API。还开发了FxCop等框架开发工具。目前。他正致力于在微软内部开发推广设计规范,将其应用到.NET Framework中。同时负责核心.NET Framework API的交付。Brad Abrams,微软公司CLR开发组和.NET Framework开发组的创始人之一,目前是项目经理主管。他参与制定了CLS、.NET Framework设计规范以及ECMA/ISOCLI标准中程序库标准,著有Programming in the .NET Environment、.NET Framework Standard Library Annotated Reference(卷1和卷2)等书。葛子昂,毕业于南京理工大学计算机系。现任微软中国研发集团服务器及开发工具事业部的软件开发主管。目前正从事Windows Workflow Foundation(WF)的相关开发。致力于为WF开发人员提供方便高效的开发工具。之前曾长期从事Windows Communication Foundation(WCF)产品的相关研发。加入微软前先后任职于育碧电脑软件有限公司和旭上电子有限公司,从事计算机游戏及图形处理器的开发。具有丰富的开发经验。出版有译作《.NET设计规范》、《Windows核心编程(第5版)》、《设计模式沉思录》。

书籍目录

第1章 概述 11.1 精心设计的框架所具备的品质 21.1.1 精心设计的框架是简单的 21.1.2 精心设计的框架设计代价高 31.1.3 精心设计的框架充满利弊权衡 41.1.4 精心设计的框架应该借鉴过去的经验 41.1.5 精心设计的框架要考虑未来发展 41.1.6 精心设计的框架应具有良好的集成性 51.1.7 精心设计的框架是一致的 5第2章 框架设计基础 72.1 渐进框架 92.2 框架设计的基本原则 122.2.1 围绕场景进行设计的原则 122.2.2 低门槛原则 182.2.3 自说明对象模型原则 222.2.4 分层架构原则 282.3 小结 30第3章 命名规范 313.1 大小写约定 313.1.1 标识符的大小写规则 323.1.2 首字母缩写词的大小写 343.1.3 复合词和常用术语的大小写 363.1.4 是否区分大小写 373.2 通用命名约定 383.2.1 单词的选择 383.2.2 使用单词缩写和首字母缩写词 403.2.3 避免使用编程语言特有的名字 413.2.4 为已有API的新版本命名 433.3 程序集和DLL的命名 453.4 名字空间的命名 463.5 类、结构和接口的命名 503.5.1 泛型类型参数的命名 533.5.2 常用类型的命名 533.5.3 枚举类型的命名 543.6 类型成员的命名 563.6.1 方法的命名 563.6.2 属性的命名 573.6.3 事件的命名 583.6.4 字段的命名 593.7 参数的命名 603.8 资源的命名 613.9 小结 62第4章 类型设计规范 634.1 类型和名字空间 654.2 类和结构之间的选择 704.3 类和接口之间的选择 734.4 抽象类的设计 794.5 静态类的设计 804.6 接口的设计 824.7 结构的设计 844.8 枚举的设计 864.8.1 标记枚举的设计 924.8.2 给枚举添加值 954.9 嵌套类型 974.10 类型和程序集元数据 984.11 小结 100第5章 成员设计 1015.1 成员设计的通用规范 1015.1.1 成员重载 1015.1.2 显式地实现接口成员 1075.1.3 属性和方法之间的选择 1105.2 属性的设计 1155.2.1 索引属性的设计 1175.2.2 当属性发生改变时的通知事件 1195.3 构造函数的设计 1215.4 事件的设计 1285.5 字段的设计 1345.6 扩展方法 1365.7 操作符重载 1425.7.1 重载operator== 1465.7.2 类型转换操作符 1465.8 参数的设计 1475.8.1 枚举和布尔参数之间的选择 1495.8.2 参数的验证 1515.8.3 参数的传递 1545.8.4 参数数量可变的成员 1565.8.5 指针参数 1595.9 小结 161第6章 扩展性设计 1626.1 扩展机制 1626.1.1 非密封类 1626.1.2 受保护的成员 1646.1.3 事件与回调函数 1656.1.4 虚成员 1696.1.5 抽象(抽象类型与抽象接口) 1716.2 基类 1736.3 密封 1746.4 小结 177第7章 异常 1787.1 抛出异常 1827.2 为抛出的异常选择合适的类型 1877.2.1 错误消息的设计 1907.2.2 异常处理 1917.2.3 封装异常 1967.3 标准异常类型的使用 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 自定义异常的设计 2027.5 异常与性能 2037.5.1 Tester-Doer模式 2047.5.2 Try-Parse模式 2057.6 小结 206第8章 使用规范 2078.1 数组 2078.2 修饰属性 2088.3 集合 2118.3.1 集合参数 2138.3.2 集合属性与返回值 2148.3.3 数组与集合之间的选择 2188.3.4 自定义集合的实现 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 选择要支持的序列化技术 2328.10.2 对数据协定序列化的支持 2338.10.3 对XML序列化的支持 2378.10.4 对运行时序列化的支持 2388.11 Uri 2398.12 System.Xml的使用 2418.13 相等性操作符 2428.13.1 值类型的相等性操作符 2438.13.2 引用类型的相等性操作符 243第9章 常用的设计模式 2449.1 聚合组件 2449.1.1 面向组件的设计 2459.1.2 因子类型 2489.1.3 聚合组件规范 2499.2 Async模式 2519.2.1 选择合适的Async模式 2519.2.2 经典Async模式 2539.2.3 Async模式的基本实现样例 2569.2.4 基于事件的Async模式 2579.2.5 对输出参数和引用参数的支持 2599.2.6 对取消操作的支持 2609.2.7 对进度报告的支持 2609.2.8 对增量结果的支持 2629.3 依赖属性 2639.3.1 依赖属性的设计 2649.3.2 附加依赖属性的设计 2669.3.3 依赖属性的验证 2679.3.4 依赖属性的改变通知 2689.3.5 依赖属性的强制赋值 2699.4 Dispose模式 2699.4.1 基本Dispose模式 2729.4.2 可终结类型 2779.5 Factory模式 2819.6 对LINQ的支持 2859.6.1 LINQ概要 2859.6.2 支持LINQ的几种方法 2869.6.3 通过IEnumerable来支持LINQ 2879.6.4 通过IQueryable来支持LINQ 2879.6.5 通过Query模式来支持LINQ 2889.7 Optional Feature模式 2919.8 Simulated Covariance模式 2949.9 Template Method模式 2999.10 超时 3019.11 可供XAML使用的类型 3039.12 结束语 305附录A C#编程风格约定 306附录B 通过FxCop来实施设计规范 313附录C API规格书样例 343术语表 350推荐读物 354索引 356

章节摘录

插图:如果框架的设计者能够站在其使用者背后解释应该如何使用框架,那么规范就没有存在的必要了。规范为我们这些框架设计者提供了一套工具,可以在自己和使用框架的开发者之间形成一种共同语言。例如,将一个操作定义为属性而不是方法可以向用户传达重要的信息,告诉他们应该如何使用该操作。在PC时代的早期,开发应用程序的主要工具是程序设计语言编译器、少量的标准程序库以及未经封装的操作系统应用程序编程接口(API),这些是很基本的底层编程工具。即使开发人员用如此基本的工具构建应用程序,重复的代码也会越来越多,而通过用更高层的API对代码进行抽象,可以消除这种重复。操作系统供应商们注意到提供此类更高层的API,可以使开发人员更容易地为他们的系统开发应用程序。能够在该系统上运行的应用程序的数量会随之增加,进而使得系统对最终用户更具有吸引力,因为最终用户需要多种多样的应用程序。此外,独立的工具及组件供应商也很快意识到了由提升API的抽象层次所带来的商机。与此同时,工业界开始逐渐地接受了面向对象设计以及它所强调的扩展性和重用性①。当可重用程序库的供应商为了开发其高API而采纳OOP(Object.OrientedProgramming,面向对象编程)时,就产生了框架(framework)的概念。自从有了框架,开发人员不再需要从头开始编写应用程序。框架会提供所需的大部分部件,这些部件经过开发人员的定制和拼装②,就成为了最终的应用程序。

媒体关注与评论

“本书第1版出版以后.立即成为整个Mono社区传诵的经典……这一版弥补了上一版的很多不足,而众多参与规范制定的核心.NET架构师及顶尖程序员所做的评注也极大地丰富了本书的内涵。”   ——Miguel de Icaza.GNOME和Mono项目创建者 “本书绝对是所有.NET开发人员的必读之作。它总结了.NET本身设计和开发过程中获得的经验和教训,不仅使你对.NET能够知其所以然。还能极大地帮助你更高效地使用.NET类库。”   ——Jeffrey Richter。微软技术大师,名著《windows核心编程》作者


编辑推荐

《.NET设计规范:约定、惯用法与模式(第2版)》:数千名微软精锐开发人员的经验和智慧。最终浓缩在这本设计规范之中。与上一版相比。书中新增了许多评注.解释了相应规范的背景和历史,从中你能聆听到微软技术大师Anders H ejIsberg、Jeffrey Richter和PauI Vick等的声音,读来令人兴趣盎然。欲罢不能。《.NET设计规范:约定、惯用法与模式(第2版)》虽然是针对.NET平台上的框架设计的,但对其他平台的框架设计同样具有借鉴意义。新版根据.NET Framework 3.O和3.5的新特性做了全面更新。主要关注的是直接影响框架可编程能力的设计问题。遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。《.NET设计规范:约定、惯用法与模式(第2版)》提供配套光盘,内含Designing.NET CIass Librarines等13个演讲视频(时长近13小时)。此外,光盘还包括.NETFrameworkework类和组件设计指南、APl规范样例以及其他有用的资源和工具。微软.N ET Framework设计组的智慧结晶,洞悉.NET技术内幕,.N ET开发者的必备图书。

图书封面

图书标签Tags

广告

下载页面


.NET设计规范 PDF格式下载



没有什么可以说的,圣经级别的巨著。无规矩不成方圆,看了这部巨著你才能感悟到.net程序该怎样写


个人感觉对于有经验来说可以看看,内容不多 多半都是一些规范方面的东西,有利于团队协作。就是木有深度,美中不足 ,可能不是想买的那种类型吧


挺好的,这本书,我理论弱,刚好补补


如果你还是城系猿,总之是还在一线码着,就从第三章开始看吧,前两章都不是我们这些城系猿现在用得着,我还是觉得从第三章开始看,你会学会.net下的编码规范,知道在写程怎么做是好的,怎么做是不好的,知道对于现实世界中的事物,在你的程序中应当抽象定义为类还是结构,总之强烈建行从第三章看起,等你多看几篇后,再来看1、2两章。


内容挺丰富的,抽象了点


书不错,但是书皮脏了,还有破损


发货很快,纸张也还行,内容也很好,


看完觉得细节体现技艺啊。


发货很快,服务态度不错,就是图书内容太深奥


其实.net方面的书太多了,这本对于特别爱看书的人,肯定有用;对于普通开发者来说,肯定首先关注尽快掌握语言,我不确定有多少人能静下心来花时间学习设计规范。


.net程序员此书必读


都是一些真正的建议,书的字比较大,而且纸张很好,虽然不是很厚,但值得一买


内容相当枯燥,但是极为适用!强烈推荐案头必备。学习它可以规范你的代码,很有帮助


质量不错,是正版,纸张挺好


看了对自己有个提升


收获一般哦


很基础,刚学习的同志很适合


内容很好!有经验的开发人员值得一读


相关图书