我正在尝试设计将在我的应用程序内部使用的界面。效仿 Google 的例子,我努力减少公共(public) API 的困惑。但是,有一些便利方法是根据最小方法定义的。在寻求方便和整洁之间的平衡时,我应该考虑哪些因素?
Google 示例:在 HashBiMap
( doc ) 中:
Why does BiMap have no getKeyForValue() method?
We did think about it (Doug Lea even half-jokingly suggested naming it teg()!). But you don't really need it; just call inverse().get().
Set
接口(interface)上的一个示例:add()
和 remove()
是最小方法,而 addAll( )
和 removeAll()
是为了方便。 addAll()
可以根据 add()
来实现,因此它并没有真正为客户端提供使用 Set
的新功能。但它确实清理了客户端代码。
我考虑过创建一个包含更多便利方法的Utility
类。但是后来我远离了 OOP,我必须在每次调用中都将正在操作的对象作为参数包含在内。虽然我猜这是遵循 Java 的 Collections
类的示例。
最佳答案
只要类有机会(即使现在没有)以比客户端更有效的方式实现该 API,我肯定会提供额外的 API。 (例如,Set.removeAll()
。)一般来说,每当它清理客户端代码时,我都会提供额外的 API。
您能否提供一个 Google API 的示例,该 API 不提供看似有用的便利方法以支持让客户端进行多次调用?
关于java - 最小的 API 与便利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987907/