.NET设计规范

.NET设计规范 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:Krzysztof Cwalina,
出品人:图灵教育
页数:392
译者:葛子昂
出版时间:2010-5
价格:69.00元
装帧:平装
isbn号码:9787115226518
丛书系列:图灵程序设计丛书·微软技术系列
图书标签:
  • .NET
  • 设计规范
  • C
  • #编程
  • 程序设计
  • Framework
  • 软件架构
  • 软件开发
  • 设计规范
  • NET
  • 编程
  • 开发
  • 架构
  • 代码规范
  • 软件工程
  • C#
  • 最佳实践
  • 面向对象
想要找书就要到 图书目录大全
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

数千名微软精锐开发人员的经验和智慧,最终浓缩在这本设计规范之中。与上一版相比,书中新增了许多评注,解释了相应规范的背景和历史,从中你能聆听到微软技术大师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 微软公司.NET Framework开发组项目经理。他为.NET Framework设计了多个API,还开发了FxCop等框架开发工具。目前,他正致力于在微软内部开发推广设计规范,将其应用到.NET Framework中,同时负责核心.NET Framework API的交付。

Brad Abrams 微软公司CLR开发组和.NET Framework开发组的创始人之一,目前是项目经理主管。他参与制定了CLS、.NET Framework设计规范以及ECMA/ISO CLI标准中程序库标准,著有Programming in the .NET Environment、.NET Framework Standard Library Annotated Reference(卷1和卷2)等书。读者可以从他的博http://blogs.msdn.com/bradA/中了解他的最新想法。

目录信息

第1章 概述 1
1.1 精心设计的框架所具备的品质 2
1.1.1 精心设计的框架是简单的 2
1.1.2 精心设计的框架设计代价高 3
1.1.3 精心设计的框架充满利弊权衡 4
1.1.4 精心设计的框架应该借鉴过去的经验 4
1.1.5 精心设计的框架要考虑未来发展 4
1.1.6 精心设计的框架应具有良好的集成性 5
1.1.7 精心设计的框架是一致的 5
第2章 框架设计基础 7
2.1 渐进框架 9
2.2 框架设计的基本原则 12
2.2.1 围绕场景进行设计的原则 12
2.2.2 低门槛原则 18
2.2.3 自说明对象模型原则 22
2.2.4 分层架构原则 28
2.3 小结 30
第3章 命名规范 31
3.1 大小写约定 31
3.1.1 标识符的大小写规则 32
.3.1.2 首字母缩写词的大小写 34
3.1.3 复合词和常用术语的大小写 36
3.1.4 是否区分大小写 37
3.2 通用命名约定 38
3.2.1 单词的选择 38
3.2.2 使用单词缩写和首字母缩写词 40
3.2.3 避免使用编程语言特有的名字 41
3.2.4 为已有api的新版本命名 43
3.3 程序集和dll的命名 45
3.4 名字空间的命名 46
3.5 类、结构和接口的命名 50
3.5.1 泛型类型参数的命名 53
3.5.2 常用类型的命名 53
3.5.3 枚举类型的命名 54
3.6 类型成员的命名 56
3.6.1 方法的命名 56
3.6.2 属性的命名 57
3.6.3 事件的命名 58
3.6.4 字段的命名 59
3.7 参数的命名 60
3.8 资源的命名 61
3.9 小结 62
第4章 类型设计规范 63
4.1 类型和名字空间 65
4.2 类和结构之间的选择 70
4.3 类和接口之间的选择 73
4.4 抽象类的设计 79
4.5 静态类的设计 80
4.6 接口的设计 82
4.7 结构的设计 84
4.8 枚举的设计 86
4.8.1 标记枚举的设计 92
4.8.2 给枚举添加值 95
4.9 嵌套类型 97
4.10 类型和程序集元数据 98
4.11 小结 100
第5章 成员设计 101
5.1 成员设计的通用规范 101
5.1.1 成员重载 101
5.1.2 显式地实现接口成员 107
5.1.3 属性和方法之间的选择 110
5.2 属性的设计 115
5.2.1 索引属性的设计 117
5.2.2 当属性发生改变时的通知事件 119
5.3 构造函数的设计 121
5.4 事件的设计 128
5.5 字段的设计 134
5.6 扩展方法 136
5.7 操作符重载 142
5.7.1 重载operator== 146
5.7.2 类型转换操作符 146
5.8 参数的设计 147
5.8.1 枚举和布尔参数之间的选择 149
5.8.2 参数的验证 151
5.8.3 参数的传递 154
5.8.4 参数数量可变的成员 156
5.8.5 指针参数 159
5.9 小结 161
第6章 扩展性设计 162
6.1 扩展机制 162
6.1.1 非密封类 162
6.1.2 受保护的成员 164
6.1.3 事件与回调函数 165
6.1.4 虚成员 169
6.1.5 抽象(抽象类型与抽象接口) 171
6.2 基类 173
6.3 密封 174
6.4 小结 177
第7章 异常 178
7.1 抛出异常 182
7.2 为抛出的异常选择合适的类型 187
7.2.1 错误消息的设计 190
7.2.2 异常处理 191
7.2.3 封装异常 196
7.3 标准异常类型的使用 197
7.3.1 exception与systemexcep- tion 198
7.3.2 applicationexception 198
7.3.3 invalidoperationexception 198
7.3.4 argumentexception、argumentnullexception及argumentoutofrange-exception 199
7.3.5 nullreferenceexception、indexoutofrangeexception及accessviolationexception 199
7.3.6 stackoverflowexception 200
7.3.7 outofmemoryexception 201
7.3.8 comexception、sehexception以及executionengine-exception 202
7.4 自定义异常的设计 202
7.5 异常与性能 203
7.5.1 tester-doer模式 204
7.5.2 try-parse模式 205
7.6 小结 206
第8章 使用规范 207
8.1 数组 207
8.2 修饰属性 208
8.3 集合 211
8.3.1 集合参数 213
8.3.2 集合属性与返回值 214
8.3.3 数组与集合之间的选择 218
8.3.4 自定义集合的实现 218
8.4 datetime和datetimeoffset 220
8.5 icloneable 222
8.6 icomparable[t]与iequatable[t] 223
8.7 idisposable 225
8.8 nullable[t] 225
8.9 object 226
8.9.1 object.equals 226
8.9.2 object.gethashcode 228
8.9.3 object.tostring 229
8.10 序列化 231
8.10.1 选择要支持的序列化技术 232
8.10.2 对数据协定序列化的支持 233
8.10.3 对xml序列化的支持 237
8.10.4 对运行时序列化的支持 238
8.11 uri 239
8.12 system.xml的使用 241
8.13 相等性操作符 242
8.13.1 值类型的相等性操作符 243
8.13.2 引用类型的相等性操作符 243
第9章 常用的设计模式 244
9.1 聚合组件 244
9.1.1 面向组件的设计 245
9.1.2 因子类型 248
9.1.3 聚合组件规范 249
9.2 async模式 251
9.2.1 选择合适的async模式 251
9.2.2 经典async模式 253
9.2.3 async模式的基本实现样例 256
9.2.4 基于事件的async模式 257
9.2.5 对输出参数和引用参数的支持 259
9.2.6 对取消操作的支持 260
9.2.7 对进度报告的支持 260
9.2.8 对增量结果的支持 262
9.3 依赖属性 263
9.3.1 依赖属性的设计 264
9.3.2 附加依赖属性的设计 266
9.3.3 依赖属性的验证 267
9.3.4 依赖属性的改变通知 268
9.3.5 依赖属性的强制赋值 269
9.4 dispose模式 269
9.4.1 基本dispose模式 272
9.4.2 可终结类型 277
9.5 factory模式 281
9.6 对linq的支持 285
9.6.1 linq概要 285
9.6.2 支持linq的几种方法 286
9.6.3 通过ienumerable[t]来支持linq 287
9.6.4 通过iqueryable[t]来支持linq 287
9.6.5 通过query模式来支持linq 288
9.7 optional feature模式 291
9.8 simulated covariance模式 294
9.9 template method模式 299
9.10 超时 301
9.11 可供xaml使用的类型 303
9.12 结束语 305
附录a c#编程风格约定 306
附录b 通过fxcop来实施设计规范 313
附录c api规格书样例 343
术语表 350
推荐读物 354
索引 356
· · · · · · (收起)

读后感

评分

书是以 "要...", "不要..." 组织的, 但精华在于, 关于为什么会这样, 以及达成这个规范经历过什么, 做了详尽的介绍, 这点在 MSDN 上是没有的, 或者限于篇幅, 写得很简略 另外有收获的地方是, 读完全书, 对于 C# 的使用规范, 有了个系统的认识, 心里大体有谱了. 关于设计, 很多...  

评分

结果几乎是考着对比原文看完的,什么"内部受保护的列表",把几乎所有大家都知道的英文关键字都翻译成中文,这就已经够难读的了,而且很多句子都部通顺.怪不得这么快就绝版买不到了. 书是好书,建议所有的.NET程序员都读一下

评分

结果几乎是考着对比原文看完的,什么"内部受保护的列表",把几乎所有大家都知道的英文关键字都翻译成中文,这就已经够难读的了,而且很多句子都部通顺.怪不得这么快就绝版买不到了. 书是好书,建议所有的.NET程序员都读一下

评分

结果几乎是考着对比原文看完的,什么"内部受保护的列表",把几乎所有大家都知道的英文关键字都翻译成中文,这就已经够难读的了,而且很多句子都部通顺.怪不得这么快就绝版买不到了. 书是好书,建议所有的.NET程序员都读一下

评分

最近在研究API的可用性设计,看了一些资料和文献,了解到微软目前的做法是运用认知维度来进行框架的可用性设计,其中也提到了这本书,不知道本书对于设计一个一般的API或framework是否有帮助。  

用户评价

评分

这本书的组织结构非常清晰,逻辑推进严密,给人一种“一气呵成”的阅读快感。在架构模式的部分,作者将传统的 MVC/MVVM 模式与现代的微服务、CQRS 思想进行了巧妙的结合,并重点阐述了在 .NET 生态中实现这些模式的最佳实践。我尤其欣赏它对数据访问层(DAL)设计的讨论,不仅仅停留在 EF Core 的基本用法,而是深入探讨了如何构建一个隔离于 ORM 细节、易于切换数据存储的 Repository 模式,并结合 Unit of Work 模式来保证事务的一致性。书中关于安全性的章节也处理得非常到位,它讲解了 JWT 令牌的生成与验证流程,以及如何在 ASP.NET Core 中安全地处理敏感数据,这些都是工程实践中避不开的关键点。总的来说,这本书提供了一个从代码细节到系统架构的完整设计光谱。它不是一本让你快速上手写 CRUD 的工具书,而是一本让你学会如何设计出健壮、可扩展、易于维护的商业级软件的“指南针”。对于那些肩负重要项目设计责任的资深工程师而言,它的参考价值是无可替代的。

评分

我必须承认,这本书的阅读门槛相当高。它假设读者已经对 C# 语言有扎实的掌握,并且对软件架构有初步的认识。对于初学者来说,可能前几章会读得比较吃力,因为它大量使用了诸如“协变与逆变”、“反射的性能开销”以及“元数据结构”等专业术语。然而,一旦你坚持下来,你会发现每一次的“顿悟”都是一次巨大的收获。我特别喜欢书中关于配置管理和日志记录框架选型的讨论。作者没有推崇某一个特定的第三方库,而是从可配置性、可扩展性和运行时性能的角度,对比了不同设计思路的优劣。这教会了我如何为自己的应用选择最合适的技术栈,而不是盲目追随技术潮流。书中对于可扩展性的讨论,特别是关于插件化架构和领域驱动设计(DDD)在 .NET Core 环境下的落地实践,展现了作者深厚的实战经验。这本书更像是一本“内功心法”,读完后你感觉自己的内力深厚了许多,面对任何新的技术挑战都能从容应对。

评分

这本书的书名是《.NET设计规范》,我以一个开发者的视角来谈谈我的阅读体验。 读完这本书,我最大的感受是它提供了一种非常系统和深入的视角来看待.NET框架下的软件设计。书中没有那种浮于表面的“最佳实践”罗列,而是深入挖掘了底层原理和设计哲学。例如,在讲解接口设计时,作者不仅仅是告诉我们“要遵循Liskov替换原则”,而是通过大量具体的代码示例和反例,展示了在不同业务场景下,如何平衡灵活性与可维护性。我尤其欣赏它对异步编程模型(TAP)的剖析,它并没有止步于 `async`/`await` 的语法糖,而是详细阐述了底层 `SynchronizationContext` 和 `TaskScheduler` 的工作机制。这对我理解和调试那些棘手的死锁和性能瓶颈大有裨益。更不用说,书中对依赖注入(DI)容器的生命周期管理和自动装箱的底层逻辑进行了详尽的描述,这让我对构建可测试、松耦合的应用程序有了更坚实的基础。对于那些渴望从“能用”跨越到“优雅”的.NET开发者来说,这本书绝对是案头必备的参考手册,它让你不再是被动地遵循框架,而是主动地驾驭它。 它的深度和广度,是市面上许多速成指南无法比拟的。

评分

这本书的价值在于它成功地搭建了一座理论与工程实践之间的桥梁。我发现它最大的优点在于,它不仅告诉你“应该做什么”,更重要的是解释了“为什么应该这样做”。举个例子,在讨论面向对象设计(OOD)时,它没有简单地重复 SOLID 原则,而是结合了 .NET 平台特性,比如如何利用 C# 8.0 引入的默认接口成员来解决“多重继承的钻石问题”,或者在框架设计中如何通过最小化公开 API 的方式来提高版本的兼容性。书中对于事件和委托的设计模式分析得非常到位,特别是如何避免事件链中的内存泄漏,提供了比 MSDN 示例更为健壮的解决方案。此外,它对 .NET 标准库中一些核心集合类的内部实现逻辑也做了剖析,比如 `Dictionary<TKey, TValue>` 的哈希冲突处理机制,这对于我们设计自定义数据结构或进行缓存策略优化至关重要。总而言之,它提供了一个宏观的蓝图,让我们理解整个 .NET 生态系统的设计哲学是如何从底层语言特性逐步演化到上层架构模式的。

评分

这本书的行文风格极其严谨,充满了学院派的求真精神,读起来像是在研读一本经典的计算机科学教材,但又比教科书更贴近实际的工程实践。我对其中关于内存管理和性能优化的章节印象深刻。作者非常坦诚地讨论了 .NET 垃圾回收(GC)机制的各种代际和调优参数,并给出了何时应该考虑使用 `IDisposable` 和 `using` 语句的清晰界限。我过去在处理非托管资源时常常有些凭感觉,但这本书提供了一套基于规则的决策框架。它强调了在进行任何性能优化之前,必须先进行准确的度量,并用具体的性能分析工具(比如 PerfView)的输出案例来佐证观点。这种“先测量,再优化”的思维模式,极大地纠正了我过去那种凭直觉修改代码的坏习惯。书中对字符串处理的细节,比如不可变性对性能的影响以及 `Span<T>` 带来的零分配优势的深入探讨,也让我对如何编写更高效的底层代码有了全新的认识。对于那些对运行时效率有极高要求的项目经理或架构师来说,这本书提供的洞察力是无价的。

评分

设计规范太重要了,建议每个产品设计团队都来一个自己的设计规范。可以用蓝湖来制定和管理,很方便

评分

.NET 开发必读--框架类库的设计内幕

评分

.NET领域里非常好的一本书,对于API的设计和.NET Framework能有更深入的理解

评分

8年前我最后一个标记想读,今天再想标记为读过,发现8年来再没有人标记过了,真的伤感,这本书绝对非常非常非常好的书,全部背下来都不为过,而且很多原则适用任何语言,特别是.Net类似的面向对象为主要范式的语言。

评分

.NET领域里非常好的一本书,对于API的设计和.NET Framework能有更深入的理解

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有