Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14833
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-23 18:39
文章分类

全部博文(5)

文章存档

2013年(5)

我的朋友

分类: 架构设计与优化

2013-04-27 21:51:51

正在阅读《软件框架设计的艺术》一书,下面是对作者一些经典语句的摘录:
(1)API公开的内容越少越好。
(2)向API中添加一个新方法是很容易的一件事,但是相反,想从API中移除一个方法却是非常困难。
(3)只有一个有效的用例才能证明一个方法或一个类应该成为API的一部分。
我对于上面的三句话的理解:
    (1)API公开的内容越少越好。这句话不难理解,例如一个类中所有方法和字段都是public级别的,意味着你要对这所有的方法都要做到向后兼容,如果哪一天你的用例[1]出现了一定改变,你可以做的只是在你实现用例的方法周围重新写一个方法。而这个方法必须保留。这样你就又多出一个不必要的接口。如果你实现用例的内部方法未被公开,则可以在这个方法内部进行修改。你公开的那个用例接口不需要做任何的改变。
    (2)向API中添加一个新方法是一件容易的事,但是相反,想从API中移除一个方法却是非常困难。这句话的前半句不难理解,如果你想你可以随时向API添加一个方法,而如果想从API中移除一个方法就比较困难了。你必须为你API的用户负责,必须保持API的向后兼容。
    (1)(2)两句话也可以这样解释:一个API对外提供的功能越多,那么为保持向后兼容性所做的工作越多。留给具体实现的空间也就越小,未来可改进的空间也就越小。
    (3)只有一个有效的用例才能证明一个方法或一个类应该成为API的一部分。这句话是说API公开的内容是基于用例的。在公开一个方法或类时,需要反复证明这方法或类对应的功能是一个有效的用例还是这个功能作为内部特性更好一些。


[1]用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约。用例描述了在不同条件下,系统对某一项目相关人员的请求作出的响应。提出请求的项目相关人员被称为主执行者(primary actor)。主执行者通过发起与系统的一次交互来实现某个目标。系统对任一执行者所作出的响应,要保证所有项目相关人员的利益不受侵犯。根据执行者作出的请求和请求涉及的条件,系统将执行不同的行为序列,每一行为序列称之为一个场景(scenario)。一个用例是多个不同场景的集合。                                        ——摘自《编写有效用例
阅读(2200) | 评论(0) | 转发(1) |
0

上一篇:FreeBSD中用户手册类型

下一篇:没有了

给主人留下些什么吧!~~