在設計通用庫的公共API時,應該暴露多少內部使用的低級內容?一方面,用戶不應過分依賴實現細節,太多低級函數/類可能會混淆API。因此,下跪反應可能是「無」。另一方面,一些低層次的功能可能對人們有用,而更多的低層功能可能會阻止抽象倒置(在高層次結構之上重新實現底層結構)。在API中暴露多少低級別內容?
此外,公開更多低級別細節可以提供性能快捷方式。例如,假設您有一個函數來查找數組的中位數。令人驚訝的原則是你應該複製數組,以便API的用戶不必關心它的實現涉及重新排序元素的副作用。在這種情況下,你是否應該注意到,median()會花費內存分配,並提供繞過分配的另一個函數,但會隨意對用戶的輸入進行重新排序?
什麼是這種類型的細節暴露多少的一般準則?
關於你的中位數()的例子,解決方案是文件。首先提供最不令人意外的方法,那麼,如果出現性能需求,則提供第二種方法,不要分配和記錄其行爲 – 2009-01-10 14:53:00