deviseAPI的最佳实践和指南

在deviseAPI时,我可以坚持哪些准则和最佳实践? 至less,我知道一个API应该易于使用和灵活。 不幸的是,这些术语可能相当主观,所以我正在寻找一些关于良好APIdevise的具体指导方针。

我发现以下值得一看Joshua布洛赫 – 如何devise一个良好的API和为什么重要

这些例子虽然在Java中,但你仍然可以画出相似之处。 既然你没有提到具体的技术, 我假设你不想要利基解决scheme。

作为需要消耗大量API的人员…

请以一致的方式编写您的API:

  1. API本身内的一致命名。 使用动词,名词,关键字完全相同的风格。

  2. 与目标环境保持一致,如果使用.NET,请参阅Microsoft的命名指南。

  3. 一致的概念。 工厂模式? 生成器模式? 静态方法? 接口? 只要select一个,并坚持下去。 真。 这个规则不存在例外情况。 它会伸出拇指大拇指。 超过1个例外? 你的API越来越业余。

这是另一个:特异性。

  1. 我可以实现的基类,如果你select提供它们,应该有很less和明确定义的函数来实现。 不要告诉我“GetData()”返回一个“object []”,然后期待我实现它,弄清楚为什么我必须将其转换为string[],然后debugging为什么被调用了20次。 有DataPoint [] GetChartData(),string [] GetLabelData()等等,让我select我应该实现哪一个更好。

  2. 请不要傻傻地用名字:PostRenderColorWheelModifyHSVBaseHandler。 你经常可以将超特定的东西重构成一个更通用的名称+参数。

  3. string参数是一个no-no! 使用枚举。 我不想使用像处理程序

    PostRenderHandler(“ColorWheel”,“HSV”,someDelegate);

我宁愿喜欢一个枚举,我可以调查:

PostRenderHandler(ModuleType.ColorWheel, Options.ColorWheelHSV, someDelegate); 

男人,我可以继续…给乔希·布洛赫的家伙 – 写得很好的API真的很棒…坏的可能会非常痛苦。

Joshua Bloch 介绍了这个话题。 演示文稿使用Java,但想法是独立于语言的。 另一个来源(pdf)快速浏览。

这是从Microsoft链接: http : //msdn.microsoft.com/en-us/library/ms229042.aspx

还有这本书:框架devise指南:可重用的.NET库的约定,习惯和模式

我认为你的问题在这个空间量和你提供的信息量上是无法得到解答的。 我已经在google中input了“api design”的几个链接,并在第一页上获得这些看起来不错的链接

http://web.archive.org/web/20151229055009/http://lcsd05.cs.tamu.edu/slides/keynote.pdf

http://www.artima.com/weblogs/viewpost.jsp?thread=142428

http://web.archive.org/web/20090520234149/http://chaos.troll.no/~shausman/api-design/api-design.pdf