1
104
在API设计中,我一直认为这个主题演讲非常有用:
这是一个摘录,我建议你阅读整个故事/观看视频。
|
2
36
您不必阅读文档就可以正确使用它。 一个了不起的API的标志。 |
3
14
许多编码标准和 longer documents 甚至 books (Framework Design Guidelines) 关于这个主题已经写过了,但其中大部分只在一个相当低的水平上有所帮助。 还有一个关于品位的问题。API可能会遵守任何规则手册中的每一条规则,但仍然很糟糕,因为它对各种时尚意识形态的奴性坚持。最近的一个罪魁祸首是模式定向,其中过度使用了单例模式(略多于初始化的全局变量)和工厂模式(一种参数化构造的方法,但通常在不需要时实现)。最近,控制反转(IOC)和相关的小型接口类型数量激增更有可能增加设计的冗余概念复杂性。 对于味觉最好的导师是模仿(阅读大量的代码和API,找出什么有用,什么不管用),经验(犯错并从中学习)和思考(不要仅仅为了自己的目的做一些时髦的事情,在行动之前思考)。 |
4
12
还有很多,但那是个好的开始 |
5
7
一个好的API允许客户机做他们需要做的几乎所有事情,但不要求他们做很多无意识的繁忙工作。“无意识的忙碌工作”的例子是初始化数据结构字段,按顺序调用多个例程,这些例程之间没有真正的自定义代码,等等。 坏API最可靠的标志是,如果您的客户机都想用自己的助手代码包装它。至少,您的API应该已经提供了帮助器代码。最有可能的是,它应该被设计为提供更高级别的抽象,客户每次都在自己滚动。 |
6
6
一个好的API有一个接近它描述的语义模型。
例如,用于创建和操作Excel电子表格的API的类如下
|
7
6
|
8
3
不好的API是指它的目标读者没有使用的API。 一个好的API是它的目标读者为了它的设计目的而使用的API。 一个伟大的API是指它的目标受众为了它的预期目的而使用的API,以及出于设计者意想不到的原因而使用的非预期受众。 如果亚马逊将其API同时发布为SOAP和REST,而REST版本胜出,这并不意味着底层的SOAP API是坏的。 我想你也会这样。你可以阅读所有你想要的关于设计的文章,并尽你最大的努力,但酸性测试是有用的。花一些时间构建方法,以获得关于什么有效,什么无效的反馈,并准备好根据需要进行重构以使其更好。 |
9
2
一个好的API可以使简单的事情变得简单(完成最常见事情的最小样板文件和学习曲线)和复杂的事情成为可能(最大的灵活性,尽可能少的假设)。一个普通的API可以很好地完成其中的一个任务(要么非常简单,但是只有当你尝试做一些非常基本的事情,要么非常强大,但是有一个非常陡峭的学习曲线等等)。一个糟糕的API是一个既不能很好地完成这些任务的API。 |
10
2
在这个问题上已经有其他几个好的答案了,所以我想我只会加入一些我没有看到提到的链接。 文章
书: |
11
1
我认为一个好的API应该允许自定义IO和内存管理挂钩(如果适用的话)。 一个典型的例子是,您有磁盘上数据的自定义压缩存档格式,而具有较差API的第三方库希望访问磁盘上的数据,并希望得到一个文件的路径,在该文件中可以加载其数据。 此链接有一些优点: http://gamearchitect.net/2008/09/19/good-middleware/ |
12
1
如果API生成错误消息,请确保消息和诊断帮助开发人员找出问题所在。 我的期望是API的调用者传入正确的输入。开发人员是API(而不是最终用户)生成的任何错误消息的使用者,针对开发人员的消息有助于开发人员调试其调用程序。 |
13
0
API是 记录不好的时候就不好了 . API是 当它有良好的文档记录并遵循编码标准时是很好的 . 现在这是两个非常简单也很难遵循的点,这将一个引入到软件体系结构领域。您需要一个优秀的架构师来构建系统,并帮助框架遵循自己的指导方针。 评论代码,写一个解释清楚的 API手册是强制性的。 如果一个API有一个解释如何使用它的好文档,那么它可能是好的。但是,如果代码是干净、好的,并且遵循其内部的标准,那么它是否有一个合适的文档就无关紧要了。 我写过一些关于编码结构的文章 here |
14
0
我认为最重要的是可读性,我指的是使大多数程序员能够在尽可能短的时间内理解代码的质量。但是判断哪一个软件是可读的,哪一个没有那么难以形容的人性:模糊性。你提到的要点在一定程度上成功地使它具体化。然而,从整体上讲,它必须是一个具体的事件,而且要想出普遍的规则是非常困难的。 |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
Anaya Ammar · 渲染后未显示的值 1 年前 |
eymentakak · json字典类型错误:字符串索引必须是整数 2 年前 |
Dev · 在laravel rest api中按特定角色获取所有用户 2 年前 |
Kimchi · 将包含列表的dic传输到数据帧中 2 年前 |