Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2034460
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: 项目管理

2008-03-16 10:52:19

    在对外发布接口规范或者发布函数库的时候,通常需要提供函数接口规范说明书(APIs Specification)。在函数规范说明书中,一般会画出函数接口概览图(APIs Overview),让读者在详细阅读文档之前就熟悉API的结构。

    接口概览图一般用类似与树的层次型结构,一个函数接口占据一个节点。逻辑上地位相同的接口画在同一级;逻辑上与其他接口有依赖关系的接口,放在被依赖接口的下一级。

1, 以C标准的文件读写函数为例,fclose释放fopen所打开的资源,在逻辑上它们出于相同地位,所以放在同一级。对于需要成对出现以创建、释放资源的接口,都应该放在同一级,比如Create/Destroy, Create/Release, Init/Uninit, Open/Close, Alloc/Free, New/Delete等; fread,fwrite和fseek,这几个接口的参数用到了fopen返回的句柄(handle),它们依赖于fopen,所以放在fopen的下一级。



2,进一步,我们可以画出稍复杂一点的。比如有如下一套接口:
#define LIB_HANDLE (void *)
#define FILE_HANDLE (void *)
#define DIR_HANDLE (void *)

LIB_HANDLE LibCreate();
LibClose(LIB_HANDLE lib);

FILE_HANDLE FileOpen(LIB_HANDLE lib, xxxxxxxxxxx);
int FileRead(FILE_HANDLE file, xxxxxxxxxxx);
int FileWrite(FILE_HANDLE file, xxxxxxxxxxx);
int FileSeek(FILE_HANDLE file, xxxxxxxxxxx);
FileCLose(LIB_HANDLE lib, FILE_HANDLE file);

DIR_HANDLE DirOpen(LIB_HANDLE lib, xxxxxxxxxxx);
int DirNextEntryName(DIR_HANDLE file, xxxxxxxxxxx);
int DirGetCount(DIR_HANDLE file, xxxxxxxxxxx);
FileCLose(LIB_HANDLE lib, FILE_HANDLE file);

根据第一节的介绍,我们可以画出上面这套接口的概览图:
3,对于复杂依赖关系的接口,笔者目前也不清楚怎么画。如果您知道,请不吝赐教!比如 X 和 Y 接口在逻辑上地位相等,而 Z 接口同时依赖于 X 和 Y。


阅读(2658) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~