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