.NET 设计规范--.NET约定、惯用法与模式
基本信息
编辑推荐
2006 Jolt生产效率大奖得主
本书包含许多评注,它们有的解释了相应规范的利弊权衡,有的介绍了其历史,有的给出了进一步的说明,有的提出了自己的批评意见。所有评注都来自经验丰富的框架设计师、业界专家及用户,这些源于开发一线的故事,为书中的许多规范增色不少。
推荐阅读
内容简介回到顶部↑
本书为框架设计师和广大开发人员设计高质量的软件提供了权威的指南。书中介绍了在设计框架时的最佳实践,提供了自顶向下的规范,其中所描述的规范普遍适用于规模不同、可重用程度不同的框架和软件。这些规范历经.net框架三个版本的长期开发,凝聚了数千名开发人员的经验和智慧。微软的各开发组正在使用这些规范开发下一代影响世界的软件产品。.
本书适用于框架设计师以及相关的专业技术人员,也适用于高等院校相关专业的学生和教师阅读参考。...
“在微软,本书所讲述的规范已经指导我们经历了.net框架三个版本和无数其他项目的开发,而且它正在指导着下一代windows操作系统api——winfx的开发。我希望你也能凭借此书,开发出容易理解和使用的软件。”
——anders hejlsberg,微软杰出工程师,c#和delphi之父
“本书是所有.net开发人员的必读之作,这些来自微软.net开发小组的真知灼见对于理解.net之所以然至关重要,不仅能帮助开发人员设计自己的类库和框架、组件,而且有助于更加高效地使用.net框架。”
——jeffrey richter,著名技术作家,《microsoft .net框架程序设计》、《windows核心编程》作者
本书中的规范凝聚了数千名微软精锐开发人员的经验和智慧,最终成为微软内部公认的设计规范。本书针对的是.net平台上的框架设计,但对.net之外的其他平台的框架设计同样具有借鉴意义。书中的大多数规范对于使用.net框架创建高质量的普通应用程序至关重要。
本书包含许多评注,解释了相应规范的背景和历史,读来令人兴味盎然。从中你能够读到来自anders hejlsberg、jeffrey richter、paul vick等微软技术大师们的声音。...
本书适用于框架设计师以及相关的专业技术人员,也适用于高等院校相关专业的学生和教师阅读参考。...
“在微软,本书所讲述的规范已经指导我们经历了.net框架三个版本和无数其他项目的开发,而且它正在指导着下一代windows操作系统api——winfx的开发。我希望你也能凭借此书,开发出容易理解和使用的软件。”
——anders hejlsberg,微软杰出工程师,c#和delphi之父
“本书是所有.net开发人员的必读之作,这些来自微软.net开发小组的真知灼见对于理解.net之所以然至关重要,不仅能帮助开发人员设计自己的类库和框架、组件,而且有助于更加高效地使用.net框架。”
——jeffrey richter,著名技术作家,《microsoft .net框架程序设计》、《windows核心编程》作者
本书中的规范凝聚了数千名微软精锐开发人员的经验和智慧,最终成为微软内部公认的设计规范。本书针对的是.net平台上的框架设计,但对.net之外的其他平台的框架设计同样具有借鉴意义。书中的大多数规范对于使用.net框架创建高质量的普通应用程序至关重要。
本书包含许多评注,解释了相应规范的背景和历史,读来令人兴味盎然。从中你能够读到来自anders hejlsberg、jeffrey richter、paul vick等微软技术大师们的声音。...
作译者回到顶部↑
本书提供作译者介绍
Krzysztof Cwalina 微软公司公共语言运行库(CLR)的项目经理。他曾为.NET框架的首个版本设计API,并负责框架中的多个名字空间,包括System.Collections、System.Diagnostics、System.Messaging,等等。他也是FxCop开发组的发起成员之一。目前,他正致力于在整个公司范围内开发推广设计规范,并将其应用到.NET框架和WinFX中。
Brad Abrams 微软公司公共语言运行库开发组和.NET框架开发组的创始成员之一,目前是Lead Program Manager。Brad也是公共语言规范(CLS)、.NET框架设计规范及ECMA\ISO C.. << 查看详细
Brad Abrams 微软公司公共语言运行库开发组和.NET框架开发组的创始成员之一,目前是Lead Program Manager。Brad也是公共语言规范(CLS)、.NET框架设计规范及ECMA\ISO C.. << 查看详细
目录回到顶部↑
第1章 概述 1
1.1 精心设计的框架所具备的品质 2
1.1.1 精心设计的框架是简单的 2
1.1.2 精心设计的框架设计代价高 3
1.1.3 精心设计的框架充满利弊权衡 3
1.1.4 精心设计的框架应该借鉴过去 4
1.1.5 精心设计的框架要考虑未来发展 4
1.1.6 精心设计的框架应具有良好的集成性 4
1.1.7 精心设计的框架是一致的 4
第2章 框架设计基础 6
2.1 渐进框架 7
2.2 框架设计的基本原则 10
2.2.1 场景驱动设计的原则 11
2.2.2 低门槛原则 17
2.2.3 自说明对象模型原则 20
2.2.4 分层架构原则 25
2.3 小结 27
第3章 命名规范 28
3.1 大小写约定 29
3.1.1 标识符的大小写规则 29
1.1 精心设计的框架所具备的品质 2
1.1.1 精心设计的框架是简单的 2
1.1.2 精心设计的框架设计代价高 3
1.1.3 精心设计的框架充满利弊权衡 3
1.1.4 精心设计的框架应该借鉴过去 4
1.1.5 精心设计的框架要考虑未来发展 4
1.1.6 精心设计的框架应具有良好的集成性 4
1.1.7 精心设计的框架是一致的 4
第2章 框架设计基础 6
2.1 渐进框架 7
2.2 框架设计的基本原则 10
2.2.1 场景驱动设计的原则 11
2.2.2 低门槛原则 17
2.2.3 自说明对象模型原则 20
2.2.4 分层架构原则 25
2.3 小结 27
第3章 命名规范 28
3.1 大小写约定 29
3.1.1 标识符的大小写规则 29
译者序回到顶部↑
软件开发是一项复杂的脑力劳动,而框架作为当代软件开发的基础,其主要目标之一就是减少不必要的复杂性,从而提高开发人员的生产力。设计一个成功的框架以及可重用的软件并不容易,幸运的是本书为我们提供了指导。
本书针对的是.NET平台,但其中的许多规范与具体平台无关,因此对.NET之外的其他平台的框架设计同样具有借鉴意义。
本书主要讨论框架的设计,但事实上其中的大多数规范同样适用于普通应用程序。我始终相信,如果在设计普通应用程序时也能够遵循书中的规范,那么对进一步提高软件质量将大有裨益。
虽然我力求完美,但难免会有疏漏,为此我建立了一份网上勘误表。如果读者发现任何错误,都可以通过该网页与我联系,一旦确认我会立即将其更新到勘误表中。勘误表的网址为:www. gesoftfactory.com/ge/FrameworkDesignGuidelines/。
最后,我要感谢本书的编辑傅志红和刘江对我的充分信任,他们还提出了许多宝贵的意见和建议。此外,还要感谢我的妻子和家人,他们给我的支持和鼓励,是我前进的动力。
葛子昂
2006年4月
本书针对的是.NET平台,但其中的许多规范与具体平台无关,因此对.NET之外的其他平台的框架设计同样具有借鉴意义。
本书主要讨论框架的设计,但事实上其中的大多数规范同样适用于普通应用程序。我始终相信,如果在设计普通应用程序时也能够遵循书中的规范,那么对进一步提高软件质量将大有裨益。
虽然我力求完美,但难免会有疏漏,为此我建立了一份网上勘误表。如果读者发现任何错误,都可以通过该网页与我联系,一旦确认我会立即将其更新到勘误表中。勘误表的网址为:www. gesoftfactory.com/ge/FrameworkDesignGuidelines/。
最后,我要感谢本书的编辑傅志红和刘江对我的充分信任,他们还提出了许多宝贵的意见和建议。此外,还要感谢我的妻子和家人,他们给我的支持和鼓励,是我前进的动力。
葛子昂
2006年4月
前言回到顶部↑
本书介绍了设计框架的最佳实践。所谓框架,即可重用面向对象程序库。书中所描述的规范普遍适用于规模不同、可重用程度不同的框架:
·大规模的系统框架。这些框架通常都有成千上万个类型,并且为大量的开发人员所使用,如.NET框架。
·中等规模的程序库。这既可以是大型分布式应用程序的可重用层,也可以是对系统框架的可重用扩展,如Web服务扩展(Web Services Enhancements)。
·小规模组件。为多个应用程序所共享,如一个grid control(网格控件)库。
值得注意的是本书关注的是直接影响框架(可以公开访问的API)可编程能力的设计问题。正因为如此,我们没有过多地涉及实现细节。正如一本介绍用户界面设计的书不会讨论有关如何实现碰撞测试(hit testing)的细节一样,本书也不会讲解如何实现二叉排序。这样的定位使我们能够提供针对框架设计师的完整可靠的指南,而不是又一本关于编程方面的书。
书中的规范是在.NET框架的开发早期形成的,它们最早只是少量的命名和设计约定,但是经过不断改进、检验、提炼,这些规范最终成为了微软内部公认的框架设计规范。这些规范历经.NET框架三个版本的长期开发,凝聚了数千名开发人员累积的经验和智慧。我们并不希望本书只是基于一些理想化的设计理念,我们认为本书是极其注重实效的,微软的各开发组将之用于日常开发就是很好的证明。
本书包含许多评注,它们有的解释了相应规范的利弊权衡,有的介绍了其历史,有的给出了进一步的说明,有的提出了自己的批评意见。所有评注都来自经验丰富的框架设计师、业界专家及用户,这些源于开发一线的故事,为书中的许多规范增色不少。
为了使名字空间名、类、接口、方法、属性及类型能够在正文中一目了然,我们用Courier字体表示。
本书的读者应该基本知道如何使用.NET框架进行编程,有一些规范要求读者熟悉.NET框架2.0版引入的新特性。如果你想找一本介绍框架设计的书,那么可以参考书后的“推荐读物”,其中有一些非常好的建议。
规范的表示方法
我们通过要、考虑、避免、不要这些词把书中的规范组织成一条条简单的建议。每一条规范都描述了一种好的或是不好的做法,并用统一的方式来表示。对于好的做法,在其前面会用ü表示,与此对应,不好的做法则用?表示。每一条规范的措词也会明确表示出这条规范的重要性。例如,“要……”描述的是必须 遵循的规范(下面所有的例子都摘自本书):
? 要在命名自定义的attribute类时加上“Attribute”后缀。
public class ObsoleteAttribute : Attribute { … }
另一方面,“考虑……”描述的是在一般情况下应该遵循的规范,但如果完全理解规范背后的道理,并有很好的理由不遵循它时,也不要畏惧打破常规:
? 考虑将类型定义为结构,而不要定义为类,如果该类型的实例较小、存活期较短或通常内嵌在其他对象中。
同样,“不要……”描述的是一些几乎绝对不应该违反的规范:
? 不要把可变类型的实例赋给只读字段。
“避免……”就没有那么绝对,它描述的做法虽然通常并不好,但却存在一些已知的可以违反该规范的情况:
·大规模的系统框架。这些框架通常都有成千上万个类型,并且为大量的开发人员所使用,如.NET框架。
·中等规模的程序库。这既可以是大型分布式应用程序的可重用层,也可以是对系统框架的可重用扩展,如Web服务扩展(Web Services Enhancements)。
·小规模组件。为多个应用程序所共享,如一个grid control(网格控件)库。
值得注意的是本书关注的是直接影响框架(可以公开访问的API)可编程能力的设计问题。正因为如此,我们没有过多地涉及实现细节。正如一本介绍用户界面设计的书不会讨论有关如何实现碰撞测试(hit testing)的细节一样,本书也不会讲解如何实现二叉排序。这样的定位使我们能够提供针对框架设计师的完整可靠的指南,而不是又一本关于编程方面的书。
书中的规范是在.NET框架的开发早期形成的,它们最早只是少量的命名和设计约定,但是经过不断改进、检验、提炼,这些规范最终成为了微软内部公认的框架设计规范。这些规范历经.NET框架三个版本的长期开发,凝聚了数千名开发人员累积的经验和智慧。我们并不希望本书只是基于一些理想化的设计理念,我们认为本书是极其注重实效的,微软的各开发组将之用于日常开发就是很好的证明。
本书包含许多评注,它们有的解释了相应规范的利弊权衡,有的介绍了其历史,有的给出了进一步的说明,有的提出了自己的批评意见。所有评注都来自经验丰富的框架设计师、业界专家及用户,这些源于开发一线的故事,为书中的许多规范增色不少。
为了使名字空间名、类、接口、方法、属性及类型能够在正文中一目了然,我们用Courier字体表示。
本书的读者应该基本知道如何使用.NET框架进行编程,有一些规范要求读者熟悉.NET框架2.0版引入的新特性。如果你想找一本介绍框架设计的书,那么可以参考书后的“推荐读物”,其中有一些非常好的建议。
规范的表示方法
我们通过要、考虑、避免、不要这些词把书中的规范组织成一条条简单的建议。每一条规范都描述了一种好的或是不好的做法,并用统一的方式来表示。对于好的做法,在其前面会用ü表示,与此对应,不好的做法则用?表示。每一条规范的措词也会明确表示出这条规范的重要性。例如,“要……”描述的是必须 遵循的规范(下面所有的例子都摘自本书):
? 要在命名自定义的attribute类时加上“Attribute”后缀。
public class ObsoleteAttribute : Attribute { … }
另一方面,“考虑……”描述的是在一般情况下应该遵循的规范,但如果完全理解规范背后的道理,并有很好的理由不遵循它时,也不要畏惧打破常规:
? 考虑将类型定义为结构,而不要定义为类,如果该类型的实例较小、存活期较短或通常内嵌在其他对象中。
同样,“不要……”描述的是一些几乎绝对不应该违反的规范:
? 不要把可变类型的实例赋给只读字段。
“避免……”就没有那么绝对,它描述的做法虽然通常并不好,但却存在一些已知的可以违反该规范的情况:
序言回到顶部↑
在.NET框架开发的早期(那时甚至.NET框架这个名字还没有诞生呢),我花了无数时间与各开发组一起对框架的设计进行评审,以确保最终得到的平台是易于理解、内在一致的。我始终认为对框架来说,最关键的品质应该是一致性。一旦用户理解了框架的一部分,那么就应该能立即理解框架的其他部分。
可以想像,一大群聪明人在一起肯定会有许多不同意见,我们的开发组正是如此——再没有其他什么事情能比编程约定更能激发出生动而热烈的辩论了。但是,为了保证一致性,我们逐渐化解了各种不同意见,并将结果编纂为一组通用的规范,这样程序员就能容易地理解并使用框架。
Brad Abrams和Krzysztof Cwalina先后帮助我们把这些规范整理到文档中,并不断对其进行更新和完善。本书就是他们的工作成果。
这些规范有效地帮助我们完成了.NET框架的三个版本和许多小项目。而且,这些规范还在指导着微软Windows操作系统的下一代API——WinFX的开发。
希望通过阅读本书,读者也能使自己的框架、类库及组件变得易于理解,易于使用。
希望框架设计能给你带来快乐。祝好运!
Anders Hejlsberg
美国华盛顿州雷德蒙德市
2005年6月
可以想像,一大群聪明人在一起肯定会有许多不同意见,我们的开发组正是如此——再没有其他什么事情能比编程约定更能激发出生动而热烈的辩论了。但是,为了保证一致性,我们逐渐化解了各种不同意见,并将结果编纂为一组通用的规范,这样程序员就能容易地理解并使用框架。
Brad Abrams和Krzysztof Cwalina先后帮助我们把这些规范整理到文档中,并不断对其进行更新和完善。本书就是他们的工作成果。
这些规范有效地帮助我们完成了.NET框架的三个版本和许多小项目。而且,这些规范还在指导着微软Windows操作系统的下一代API——WinFX的开发。
希望通过阅读本书,读者也能使自己的框架、类库及组件变得易于理解,易于使用。
希望框架设计能给你带来快乐。祝好运!
Anders Hejlsberg
美国华盛顿州雷德蒙德市
2005年6月
媒体评论回到顶部↑
“在微软,本书所讲述的规范已经指导我们经历了.NET框架三个版本和无数其他项目的开发,而且它正在指导着下一代Windows操作系统API——WinFX的开发。我希望你也能凭借此书,开发出容易理解和使用的软件。”
——Anders Hejlsberg,微软杰出工程师,C#和Delphi之父
“本书是所有.NET开发人员的必读之作,这些来自微软.NET开发小组的真知灼见对于理解.NET之所以然至关重要,不仅能帮助开发人员设计自己的类库和框架、组件,而且有助于更加高效地使用.NET框架。”
——Jeffrey Richter,著名技术作家,《Microsoft .NET框架程序设计》、《Windows核心编程》作者
本书中的规范凝聚了数千名微软精锐开发人员的经验和智慧,最终成为微软内部公认的设计规范。本书针对的是.NET平台上的框架设计,但对.NET之外的其他平台的框架设计同样具有借鉴意义。书中的大多数规范对于使用.NET框架创建高质量的普通应用程序至关重要。
本书包含许多评注,解释了相应规范的背景和历史,读来令人兴味盎然。从中你能够读到来自Anders Hejlsberg、Jeffrey Richter、Paul Vick等微软技术大师们的声音。
——Anders Hejlsberg,微软杰出工程师,C#和Delphi之父
“本书是所有.NET开发人员的必读之作,这些来自微软.NET开发小组的真知灼见对于理解.NET之所以然至关重要,不仅能帮助开发人员设计自己的类库和框架、组件,而且有助于更加高效地使用.NET框架。”
——Jeffrey Richter,著名技术作家,《Microsoft .NET框架程序设计》、《Windows核心编程》作者
本书中的规范凝聚了数千名微软精锐开发人员的经验和智慧,最终成为微软内部公认的设计规范。本书针对的是.NET平台上的框架设计,但对.NET之外的其他平台的框架设计同样具有借鉴意义。书中的大多数规范对于使用.NET框架创建高质量的普通应用程序至关重要。
本书包含许多评注,解释了相应规范的背景和历史,读来令人兴味盎然。从中你能够读到来自Anders Hejlsberg、Jeffrey Richter、Paul Vick等微软技术大师们的声音。
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· InfoQ中文站论坛:.NET讨论区(InfoQ .NET)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· WCF的开山之作 WCF画卷的清明上河图(WCF WF WPF)
· 图灵公司详细书目
评论交流
共有43人开贴评论 53人参与评论 36人参与打分 查看
评价等级:







发表于:2010-8-4 16:06:00
书是以 "要...", "不要..." 组织的, 但精华在于, 关于为什么会这样, 以及达成这个规范经历过什么, 做了详尽的介绍, 这点在 MSDN 上是没有的, 或者限于篇幅, 写得很简略
另外有收获的地方是, 读完全书, 对于 C# 的使用规范, 有了个系统的认识, 心里大体有谱了.
关于设计, 很多书在讲, 编码规范, 也司空见惯, 但是针对语言讲常用法的书不多.
而当一位有经验的程序员, 接触一门新的语言时, 最需要的就是这方面的知识, 结果很多时候, 只能凭自己慢慢摸索, 或依靠其他语言上积累的经验, 或者看语言教程中的示例, 或者看开源项目中的用法, 但都容易显得零碎, 不够系统, 总有点踹踹然的感觉.
很高兴, 这本书我认为能够承担起 C# 上的这个职责, 就好比 <<Effective ...>> 在 C++ 上一样.
另外有收获的地方是, 读完全书, 对于 C# 的使用规范, 有了个系统的认识, 心里大体有谱了.
关于设计, 很多书在讲, 编码规范, 也司空见惯, 但是针对语言讲常用法的书不多.
而当一位有经验的程序员, 接触一门新的语言时, 最需要的就是这方面的知识, 结果很多时候, 只能凭自己慢慢摸索, 或依靠其他语言上积累的经验, 或者看语言教程中的示例, 或者看开源项目中的用法, 但都容易显得零碎, 不够系统, 总有点踹踹然的感觉.
很高兴, 这本书我认为能够承担起 C# 上的这个职责, 就好比 <<Effective ...>> 在 C++ 上一样.
| 我要写评论 |
| 查看所有评论交流(共43条) |








点击看大图





加载中...

