对于 API(以及 IMO 的许多类型的问题),自上而下的问题划分和分析方法是可行的方法。
然而(这只是我的 2c 基于我自己的个人经验,所以要持保留态度),专注于它的 Javadoc 部分是一件好事,但这仍然不够,而且不能可靠地做到起点。事实上,这是非常面向实现的。那么在此之前应该进行的设计、建模和推理(无论多么简短)发生了什么?
您必须进行某种建模来识别构成 API 的实体(名词、角色和动词)。而且无论一个人想要多么“敏捷”,如果没有清晰的问题陈述图(即使它只是一个 10K 英尺的视图),这些东西就无法原型化。
最好的起点是指定您尝试实现的内容,或者更准确地说,指定您的 API 尝试解决的问题类型。BDD 可能会有所帮助(更多内容如下)。也就是说,您的 API 将提供什么(数据元素),以及向谁执行什么操作(动词)以及在什么条件下(上下文)。这导致确定哪些实体提供这些东西以及在哪些角色下提供这些东西(接口,特别是与单个、明确的角色或功能的接口,而不是包罗万象的方法)。这导致分析它们是如何编排在一起的(继承、组合、委托等)
一旦你有了这些,你就可以开始做一些初步的Javadoc。然后,您可以开始着手实现这些接口、这些角色。接下来是更多 Javadoc(除了可能不属于 Javadoc 的其他文档,即教程、操作方法等)
您从用例和可验证的需求以及每件事应该单独或协作完成的行为描述开始您的实施。BDD 在这里会非常有帮助。
随着你的工作,你不断地重构,希望通过一些指标(圈复杂度和LCOM 的一些变体)。这两个告诉你应该在哪里重构。
API 的开发不应与应用程序的开发有本质上的不同。毕竟,API 是用户(碰巧有开发角色)的实用应用程序。
因此,您不应将 API 工程与一般软件密集型应用程序工程区别对待。使用相同的做法,根据你的需要调整它们(每个使用软件的人都应该这样做),你会做得很好。
很长一段时间以来,谷歌一直在 youtube 上上传其“Google Tech Talk”视频讲座系列。其中之一是长达一小时的讲座,题为“如何设计一个好的 API 及其重要性”。您可能还想检查一下。
一些可能对您有所帮助的链接:
Google Tech Talk 的“超越测试驱动开发:行为驱动开发”:http ://www.youtube.com/watch?v=XOkHh8zF33o
行为驱动开发:http ://behaviour-driven.org/
“实用 API 设计”一书的网站伴侣:http ://wiki.apidesign.org/wiki/Main_Page
回到基础——结构化设计#内聚和耦合:http ://en.wikipedia.org/wiki/Structured_Design#Structured_Design