在设计通用库的公共API时,应该暴露多少内部使用的低级内容?一方面,用户不应过分依赖实现细节,太多低级函数/类可能会混淆API。因此,下跪反应可能是“无”。另一方面,一些低层次的功能可能对人们有用,而更多的低层功能可能会阻止抽象倒置(在高层次结构之上重新实现底层结构)。在API中暴露多少低级别内容?
此外,公开更多低级别细节可以提供性能快捷方式。例如,假设您有一个函数来查找数组的中位数。令人惊讶的原则是你应该复制数组,以便API的用户不必关心它的实现涉及重新排序元素的副作用。在这种情况下,你是否应该注意到,median()会花费内存分配,并提供绕过分配的另一个函数,但会随意对用户的输入进行重新排序?
什么是这种类型的细节暴露多少的一般准则?
关于你的中位数()的例子,解决方案是文件。首先提供最不令人意外的方法,那么,如果出现性能需求,则提供第二种方法,不要分配和记录其行为 – 2009-01-10 14:53:00