什么时候API过度设计?

dsi*_*cha 12 api project-management api-design

我鄙视使用过度设计的API,这些API并不简单.尽管如此,我正在为一个开源库设计一个API,我开始觉得我陷入了过度工程陷阱.我当然无法确定,因为当然,我写了一些令人讨厌的东西,所以它的工作原理对我来说比其他任何人都更明显.从开发人员的角度来看,您的API可能过度设计有哪些警告信号?

S.L*_*ott 19

"从开发人员的角度来看,你的API可能过度设计有什么警告标志?"

没有用例.

如果您无法完成简单的"执行此操作"方案,那么您并未设计出考虑特定用例的有用API.

您的文档应该是那些用例.

不直接解决用例的功能可能过度工程化.

  • +1 - 与我的评论相同,但更快. (2认同)

Joh*_*yre 11

你应该查看Google Tech Talk 如何设计一个好的API以及 Joshua Bloch 为何重要 ......他涵盖了很多这方面的内容.

  • +1,也将链接到它 - 幻灯片也可用:http://lcsd05.cs.tamu.edu/slides/keynote.pdf (3认同)
  • 在这里,您可以一起查看视频和幻灯片,嵌入在同一浏览器视图中:http://www.infoq.com/presentations/effective-api-design (3认同)

Shi*_*Yip 5

我发现一个非常有用的技巧,它在过去帮助过我,是在编写代码之前,期间和之后编写doc.

在设计供其他人使用的API时,我通常在编写代码之前记录设计.如果我过度设计设计,那么设计规范通常会充满冲突和废话.

在编码期间,我通常会删除类定义和函数体,并开始为它们编写doxygen注释.在评论中我将有用例,示例代码和接口的假设.在此阶段,在编写太多实际代码之前,类接口通常会多次重新设计.我知道当样本代码难以编写时我已经过度工程了,我很难解释界面.当您尝试向人们解释如何使用API​​时,会暴露并消除许多糟糕的设计构思.

在编码之后,我将注释中的示例代码替换为从我的单元测试中复制的真实编译和测试代码,并进一步记录接口的行为.过度工程化的另一个迹象是当我的单元测试无法跟上界面变化时,因为有太多的移动部件和太多的方法来做同样的事情和单元测试以指数比例增长.