【发布时间】:2009-01-22 13:42:12
【问题描述】:
背景:
我正在我的大学上一门名为“软件约束”的课程。在第一堂课中,我们学习了如何构建好的 API。
我们得到一个非常糟糕的 API 函数的一个很好的例子是 C# 中的套接字public static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds);。该函数接收 3 个套接字列表,并销毁它们,使用户必须在将它们输入Select() 之前克隆所有套接字。它还有一个超时(以微秒为单位),它是一个 int,它设置服务器可以等待套接字的最长时间。这个限制是 +/-35 分钟(因为它是一个 int)。
问题:
- 如何将 API 定义为 “不好”?
- 如何定义 API 是否“好”?
需要考虑的要点:
- 难以记忆的函数名称。
- 难以理解的函数参数。
- 文档错误。
- 一切都如此相互关联,以至于如果您需要更改 1 行代码,您实际上需要在其他地方更改数百行代码。
- 破坏其参数的函数。
- “隐藏”的复杂性导致可扩展性差。
- 用户/开发人员需要围绕 API 构建包装器,以便使用它。
【问题讨论】:
标签: api api-design