《NET 设计规范》第 2 章 框架设计基础

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

  要理解广大开发人员并有针对性地为他们设计框架。

  要理解各种编程语言,并为他们设计框架。  

2.1 渐进框架

2.2 框架设计的基本原则

  要确保在设计任何包含公用API的特性时,把 API 设计规格书作为它最核心的部分。

  要为每个主要的特性域定义一些最常见的使用场景。

  要确保使用场景与适当的抽象层次相对应。场景应该大致与最终用户的用例相对应。

  要在设计 API 时,先为主要的使用场景编写样例代码,然后在定义对象模型来支持这些样例代码。

  要用至少两种不同风格的编程语言来为主要场景编写样例代码。

  考虑用动态类型语言来为主要场景编写样例代码。

  不要在设计框架的公用 API 时完全依赖于标准的设计方法。

  要安排可用性测试研究来测试用于主要场景的 API。

  要确保每个主要特性域的命名空间只包含那些用于最常见场景的类型。应该把用于更高级场景的类型放在子命名空间中。

  要为构造函数和方法提供简单的重载函数。一个简单的重载函数不仅参数的数量非常少,而且所有的参数都是基本类型。

  不要把用于高级场景的成员放在为主要使用场景而设计的类型中。

  不要要求用于在最基本的场景中显示地实例化一个以上的类型。

  不要要求用户在为基本使用场景编写代码之前就进行大量的初始化。

  要尽可能地(用便利的重载函数)为所有的属性和参数提供合适的默认值。

  要通过异常来传达对 API 的误用。

  要确保 API 是直观的,无需查阅参考文档就能用于基本场景。

  要为所有的 API 提供优秀的文档。

  要在审查规格书的时候投入大量的时间和精力,来讨论标识符名称的选择。

  不要担心标识符的名字太冗长。

  考虑在设计过程的早期让用于教育专家参与。考虑把最好的名字留给常用类型。

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

  要尽可能地提供强类型的 API。

  要确保与 .NET 框架以及客户可能会使用的其它框架保持一致。

  避免在主要场景的 API 中使用太多的抽象。

  考虑对框架进行分层,使高层API能够提供最佳的开发效率,低层API能提供最强大的功能和最丰富的表现力。

  避免把非常复杂(即包含许多类型)的低层API和高层API混在同一个命名空间中。

  要确保单个特性域中不同的层能很好地集成在一起。开发人员应该能在开始时使用其中一层来进行开发,然后通过修改代码就可以使用另一层,而且这样的改动应该无需重写整个应用程序。

《NET 设计规范》第 2 章 框架设计基础的更多相关文章

  1. 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)

    1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...

  2. 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)

    1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...

  3. 《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)

    1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.Test ...

  4. 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)

    1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...

  5. 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)

    1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...

  6. 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)

    1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称 ...

  7. 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

    1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...

  8. 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)

    1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...

  9. 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)

    1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...

随机推荐

  1. Android刮刮卡自定义控件

    网上的都是自己绘制的或者图片,我的需求是可以随意的自定义底部和顶部的布局.所以自己重写一个,原理就是直接继承 View 来实现一个刮层,让这个刮层和图片以及文字不产生任何依赖,再结合 FrameLay ...

  2. Promises-小程序购物车结算

    //结算提交 checkOut : function(){ var price = this.data.sum; var user = wx.getStorageSync('userInfo'); i ...

  3. bzoj4332;vijos1955:JSOI2012 分零食

    描述 这里是欢乐的进香河,这里是欢乐的幼儿园. 今天是2月14日,星期二.在这个特殊的日子里,老师带着同学们欢乐地跳着,笑着.校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们.听到这个消息,所有同 ...

  4. 2017ecjtu-summer training #2 CodeForces 608B

    B. Hamming Distance Sum time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  5. B. Duff in Love

    B. Duff in Love time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  6. c语言函数实参与形参整理

  7. c#版 K线控件(Stock)

    K线起源于日本米市交易,它的基本用途就是为了寻找"买卖点".股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个数据展开,反映大势 ...

  8. JDBC连接数据库(查询)的步骤

    先导入jar包 代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;impor ...

  9. line-height相关总结

    line-height http://cindylu520.iteye.com/blog/670512 四个boxes containing boxes inline boxes 匿名inline b ...

  10. debian 9 双显卡安装NVIDIA显卡驱动

    最近用debian,给debian装n卡驱动折腾了好几天了,主要还是网络不好,官方wiki的方法下载经常卡死..摸索了几天感觉已经摸到了头绪,决定写下来供大家参考参考 先提供单显卡NVIDIA驱动的安 ...