【发布时间】:2010-09-30 16:05:58
【问题描述】:
在设计通用库的公共 API 时,应该公开多少内部使用的低级内容?一方面,用户不应该过于依赖实现细节,过多的低级函数/类可能会使 API 混乱。因此,下意识的反应可能是“无”。另一方面,一些低级功能可能对人们有用,并且公开更多功能可以防止抽象反转(在高级构造之上重新实现低级构造)。
此外,公开更多低级细节可以提供性能捷径。例如,假设您有一个查找数组中位数的函数。最不意外的原则是你应该复制数组,这样你的 API 的用户就不必关心它的实现涉及重新排序元素的副作用。在这种情况下,您是否应该注意 medium() 会消耗内存分配并提供另一个绕过分配但会任意重新排序用户输入的函数?
对于要公开多少此类细节有哪些一般准则?
【问题讨论】:
-
关于您的 median() 示例,解决方案是记录。首先提供最不令人惊讶的方法,然后,如果出现性能需求,提供不分配和记录其行为的第二种方法
标签: api encapsulation abstraction