.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础

  要设计既功能强大又易于使用的框架

     要明确的为具有不同编程风格、需求、技能以及使用不同编程语言的开发人员设计框架

  要了解那些使用多语言框架的广大开发人员

1.框架设计的基本原则

场景驱动设计原则:必须从一组使用场景以及实现这些场景的样例代码开始。要确保对任何包含公有API的特性的设计来说,其核心部分都是API设计规范。要为每一个主要的特性域定义一些最常见的使用场景。要确保使用场景与适当的抽象层次相对性。场景应该大致与最终用户的用例相对应。要以这样的方式来设计API:先为主要的使用场景编写样例代码,然后再定义对象模型来支持这些样例代码。要用至少两种不同的编程语言来为主要的场景编写样例代码,最好能保证所选编程语言的语法和风格差异很大。不要在设计框架的公用API时完全依赖于标准的设计方法。要安排可用性研究来测试用于主要场景的API。

2.低门槛原则

框架必须以易于实验的方式来为普通用户提供一个低门槛

要确保每个主要特性域的名字控件只包含哪些用于最常见场景的类型。应该把用于更高级的场景的类型放在子名字空间中。要为构造函数和方法提供简单的重载函数。一个简单的重载函数不仅参数的数量非常少,而且所有的参数都是基本类型。不要在为主要的使用场景设计的类型中包含用于高级场景的方法。不要要求用户在最基本的场景中显式地实例化一个以上的类型。不要要求用户在为基本使用场景编写代码之前就进行大量的初始化。要尽可能地位所有的属性和参数提供合适的默认值。要通过异常来传达对API得误用。

3.自说明对象模型原则

在简单的使用场景中,一定要让框架无需文档就能使用。要确保API是直观的,无需查阅参考文档就能用于基本场景。要为所有的API提供优秀的文档。

设计自说明的API时最重要的一下考虑因素:

  1.命名 要在规范检查中重视标示符名称的选择  不要担心标示符的名字太冗长 要在设计过程的早期让用户教育专家参与 考虑把最好的名字留个最常用的类型

  2.异常 要通过异常消息来告诉开发人员对框架的误用。

  3.强类型

   4.一致性

   5.限制抽象的数量

4.分层架构原则

  分层设计使得在单个框架中同时提供强大的功能和易用性成为可能

   在单独的名字空间镇南关暴露层 :把高层类型和底层类型放在虽然不同但是有联系的名字空间中。

  在相同的名字空间中暴露层 :把高层类型和底层类型放在同一个名字控件中。考虑对框架进行分层,使高层API能提供最佳的开发效率,底层API能够提供最强的的功能和最丰富的表现力。避免把低层API和高层API混在同一个名字空间中,如果低层AIP非常复杂的话。要确保单个特性域中不同的层能够很好的集成在一起。

 

 

 

转载于:https://www.cnblogs.com/lufangtao/archive/2012/04/08/2437467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
清晰完整PDF版本,是我从网上买来的,是第二版,在 CSDN 上只有我整个是清晰完整的。 共 50MB,分为5个分卷 .NET设计规范约定惯用模式(第2版)克瓦林纳 2/5 .NET 设计规范 约定惯用模式 第2版 克瓦林纳 定 价:69.00元 作  者:(美)克瓦林纳 等著,葛子昂 译 出 版 社:人民邮电出版社 出版时间:2010-5-1 页  数:370 字  数:579000 I S B N:9787115226518 -------------------------------------------------------------------------------- 数千名微软精锐开发人员的经验和智慧,最终浓缩在这本设计规范之中。与上一版相比,书中新增了许多评注,解释了相应规范的背景和历史,从中你能聆听到微软技术大师Anders Hejlsberg、Jeffrey Richter和Paul Vick等的声音,读来令人兴味盎然。   本书虽然是针对.NET平台上的框架设计的,但对其他平台的框架设计同样具有借鉴意义。新版根据.NET Framework 3.0和3.5的新特性做了全面更新,主要关注的是直接影响框架可编程能力的设计问题。遵守这些规范对于使用.NET Framework创建高质量的应用程序至关重要。   本书提供配套光盘,内含Designing .NET Class Libraries等13个演讲视频。此外,光盘还包括.NET Framework类和组件设计指南、API规范样例以及其他有用的资源和工具。 :数千名微软精锐开发人员的经验和智慧,最终浓缩在这本设计规范之中。与上一版相比,书中新增了许多评注,解释了相应规范的背景和历史,从中你能聆听到微软技术大师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的交付。 :Krzysztof Cwalina 微软公司.NET Framework开发组项目经理。他为.NET Framework设计了多个API,还开发了FxCop等框架开发工具。目前,他正致力于在微软内部开发推广设计规范,将其应用到.NET Framework中,同时负责核心.NET Framework API的交付。 目录 -------------------------------------------------------------------------------- 第1章 概述  1.1 精心设计框架所具备的品质   1.1.1 精心设计框架是简单的   1.1.2 精心设计框架设计代价高   1.1.3 精心设计框架充满利弊权衡   1.1.4 精心设计框架应该借鉴过去的经验   1.1.5 精心设计框架要考虑未来发展   1.1.6 精心设计框架应具有良好的集成性   1.1.7 精心设计框架是一致的 第2章 框架设计基础  2.1 渐进框架  2.2 框架设计的基本原则   2.2.1 围绕场景进行设计的原则   2.2.2 低门槛原则   2.2.3 自说明对象模型原则 显示全部信息 :第1章 概述  1.1 精心设计框架所具备的品质   1.1.1 精心设计框架是简单的   1.1.2 精心设计框架设计代价高   1.1.3 精心设计框架充满利弊权衡   1.1.4 精心设计框架应该借鉴过去的经验   1.1.5 精心设计框架要考虑未来发展   1.1.6 精心设计框架应具有良好的集成性   1.1.7 精心设计框架是一致的 第2章 框架设计基础  2.1 渐进框架  2.2 框架设计的基本原则   2.2.1 围绕场景进行设计的原则   2.2.2 低门槛原则   2.2.3 自说明对象模型原则   2.2.4 分层架构原则  2.3 小结 第3章 命名规范  3.1 大小写约定   3.1.1 标识符的大小写规则   3.1.2 首字母缩写词的大小写   3.1.3 复合词和常用术语的大小写   3.1.4 是否区分大小写  3.2 通用命名约定   3.2.1 单词的选择   3.2.2 使用单词缩写和首字母缩写词   3.2.3 避免使用编程语言特有的名字   3.2.4 为已有API的新版本命名  3.3 程序集和DLL的命名  3.4 名字空间的命名  3.5 类、结构和接口的命名   3.5.1 泛型类型参数的命名   3.5.2 常用类型的命名   3.5.3 枚举类型的命名  3.6 类型成员的命名   3.6.1 方的命名   3.6.2 属性的命名   3.6.3 事件的命名   3.6.4 字段的命名  3.7 参数的命名  3.8 资源的命名  3.9 小结 第4章 类型设计规范  4.1 类型和名字空间  4.2 类和结构之间的选择  4.3 类和接口之间的选择  4.4 抽象类的设计  4.5 静态类的设计  4.6 接口的设计  4.7 结构的设计  4.8 枚举的设计   4.8.1 标记枚举的设计   4.8.2 给枚举添加值  4.9 嵌套类型  4.10 类型和程序集元数据  4.11 小结 第5章 成员设计 第6章 扩展性设计 第7章 异常 第8章 使用规范 第9章 常用的设计模式 附录A C#编程风格约定 附录B 通过FxCop来实施设计规范 附录C API规格书样例 术语表 推荐读物
第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 3.1.2 首字母缩写词的大小写 31 3.1.3 复合词和常用术语的大小写 33 3.1.4 是否区分大小写 35 3.2 通用命名约定 35 3.2.1 单词的选择 36 3.2.2 使用单词缩写和首字母缩写词 37 3.2.3 避免使用语言特有的名字 38 3.2.4 为已有API的新版本命名 39 3.3 程序集和DLL的命名 42 3.4 名字空间的命名 43 3.5 类、结构和接口的命名 47 3.5.1 泛型类型参数的命名 49 3.5.2 常用类型的命名 50 3.5.3 枚举类型的命名 51 3.6 类型成员的命名 53 3.6.1 方的命名 53 3.6.2 属性的命名 54 3.6.3 事件的命名 55 3.6.4 字段的命名 57 3.7 参数的命名 57 3.8 资源的命名 58 3.9 小结 59 第4章 类型设计规范 60 4.1 类型和名字空间 62 4.2 类和结构之间的选择 67 4.3 类和接口之间的选择 69 4.4 抽象类的设计 76 4.5 静态类的设计 78 4.6 接口的设计 79 4.7 结构的设计 81 4.8 枚举的设计 83 4.8.1 标记枚举的设计 89 4.8.2 给枚举添加值 93 4.9 嵌套类型 94 4.10 小结 96 第5章 成员设计 97 5.1 成员设计的一般规范 97 5.1.1 成员重载 97 5.1.2 显式地实现接口成员 102 5.1.3 属性和方之间的选择 106 5.2 属性的设计 112 5.2.1 索引属性的设计 113 5.2.2 属性改变的通知事件 115 5.3 构造函数的设计 117 5.4 事件的设计 123 5.5 字段的设计 130 5.6 操作符重载 132 5.6.1 重载operator== 136 5.6.2 类型转换操作符 136 5.7 参数的设计 138 5.7.1 枚举和布尔参数之间的选择 140 5.7.2 参数的验证 142 5.7.3 参数的传递 145 5.7.4 参数数量可变的成员 147 5.7.5 指针参数 150 5.8 小结 152 第6章 为扩展性而设计 153 6.1 扩展机制 153 6.1.1 非密封类 153 6.1.2 保护成员 155 6.1.3 事件与回调函数 156 6.1.4 虚成员 158 6.1.5 抽象(抽象类型与抽象接口) 160 6.2 基类 162 6.3 密封 163 6.4 小结 166 第7章 异常 167 7.1 抛出异常 171 7.2 为抛出的异常选择合适的类型 175 7.2.1 错误消息的设计 176 7.2.2 异常处理 177 7.2.3 对异常进行封装 182 7.3 标准异常类型的使用 184 7.3.1 Exception与SystemException 184 7.3.2 ApplicationException 184 7.3.3 InvalidOperationException 184 7.3.4 ArgumentException、ArgumentNullException及ArgumentOutOfRangeException 185 7.3.5 NullReferenceException、IndexOutOfRangeException及AccessViolationException 186 7.3.6 StackOverflowException 186 7.3.7 OutOfMemoryException 187 7.3.8 ComException、SEHException及其他CLR异常 188 7.3.9 ExecutionEngineException 188 7.4 自定义异常的设计 188 7.5 异常与性能 190 7.5.1 Tester-Doer模式 190 7.5.2 Try-Parse模式 191 7.6 小结 192 第8章 使用规范 193 8.1 数组 193 8.2 attribute 195 8.3 集合 198 8.3.1 集合参数 199 8.3.2 集合属性与返回值 200 8.3.3 数组与集合之间的选择 204 8.3.4 自定义集合的实现 205 8.4 ICloneable 207 8.5 IComparableT与IEquatableT 208 8.6 IDisposable 210 8.7 对象 210 8.7.1 Object.Equals 210 8.7.2 Object.GetHashCode 212 8.7.3 Object.ToString 213 8.8 Uri 214 8.9 System.Xml的使用 216 8.10 相等性操作符 218 8.10.1 值类型的相等性操作符 218 8.10.2 引用类型的相等性操作符 219 第9章 常用的设计模式 220 9.1 聚合组件 220 9.1.1 面向组件的设计 222 9.1.2 因子类型 224 9.1.3 聚合组件规范 224 9.2 Async模式 227 9.3 Dispose模式 232 9.3.1 基本Dispose模式 234 9.3.2 可终结类型 240 9.4 Factory模式 243 9.5 Optional Feature模式 247 9.6 Template Method模式 251 9.7 超时 252 9.8 结束语 254 附录A C#编程风格约定 255 A.1 通用风格约定 255 A.1.1 花括号的使用 255 A.1.2 空格的使用 257 A.1.3 缩进的使用 259 A.2 命名约定 259 A.3 注释 260 A.4 文件的组织 261 附录B 通过FxCop来实施设计规范 263 B.1 FxCop是什么? 263 B.2 FxCop的发展过程 264 B.3 FxCop的工作原理 265 B.4 FxCop规范的覆盖范围 265 B.4.1 与命名规范有关的FxCop规则 265 B.4.2 与类型设计规范有关的FxCop规则 274 B.4.3 与成员的设计有关的FxCop规则 277 B.4.4 与为扩展性而设计有关的FxCop规则 284 B.4.5 与异常有关的FxCop规则 285 B.4.6 与使用规范有关的FxCop规则 287 B.4.7 与设计模式有关的FxCop规则 291 附录C API规范样例 292 术语表 299 推荐读物 303 索引 305

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值