在对外发布接口规范或者发布函数库的时候,通常需要提供函数接口规范说明书(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。
阅读(2732) | 评论(0) | 转发(0) |