在编写一个模块的库或公共API时,许多其他代码将在各种用例中使用它们,平衡灵活性和易用性的最佳方法是什么?我相信这两者经常发生冲突,你制造的东西越灵活,就越难以让它做任何特定的事情.
例如,C++ STL使用迭代器,这恕我直言是可怕的低水平和恼人的工作,但是作为交换,他们是允许相同的代码来对各种STL容器的操作非常灵活.另一个例子是Java标准库的设计理念,与专为最高的模块化和灵活性,它的小,非常具体的类,与Python标准库,它倾向于一个平坦的类层次结构,使操作共同使用的情况下更简单.这些事情应该如何平衡?