设计一个更好的API?(Designing a better API?)

2019-08-06 02:12发布

  1. 什么是最好的实践和模式应遵循的设计的API?
  2. 如何实现实现隐藏的最佳方式(C ++ / Java的)?
  3. API的设计在性质上是通用的?
  4. 任何参考书籍/链接与精致的例子初学者引导?

Answer 1:

这可能是对你有用。

API设计的小手册(Wayback机器)

(闭死原件)API设计的小手册



Answer 2:

我不知道我有一个伟大的答案都在那里,你个人的问题,但我想我有非常第一个很好的回答。

尝试使用它是有史以来之前。 我的意思是,好像真的存在的代码编写单元测试。 写一些将要使用API​​,你甚至已经写了API的一个前行的代码。 当您尝试使用它,你将很快看到什么可行,什么不能在你脑子里的设计工作, 因为你还没有写任何的你会很快改变,以符合其实际使用实际的代码

从未有任何摩擦,如果你有没有犯任何的它的代码改变的东西,但你做的那一刻,往往是不情愿的一些措施来这样做。



Answer 3:

Q4:

  • 如何设计一个好的API和重要性 -伟大的视频,非常值得花时间看的。

在我看来,乔希布洛赫有最好的想法,当谈到编写良好的API,并且他可以在一个非常容易理解的方式解释它们。 上面的视频将解决Q1-3为您服务。



Answer 4:

我建议你检查如何设计一个好的API及为何重要

一个写得很好的API可以是一个伟大的资产,该写的组织和所有使用它。 鉴于良好的API设计的重要性,令人惊讶的一点已经写关于这个问题的。 在这次讲座中(记录在JavaPolis的),Java库设计师约书亚·布洛克教你如何设计一个良好的API,有什么好的和坏的API看起来像许多例子。

http://www.infoq.com/presentations/effective-api-design

您还可以阅读的书实用API设计:一个Java™框架架构师的自白 。 我没有读它,所以我不知道它的内容可能是对你有用。

另一种资源来检查: 如何设计(模块)API



Answer 5:

我有一个关于第3点(通用API设计),一个技巧:

开始立足于特定使用案例的API的; 让你的设计而定的,不是通用的-后来的后来genericise 如果您发现该API可以重新使用。

在过去,我已经看到重构的点的API,他们是很通用的方法参数之一是“参数”对象或更糟的是,对应于artbitrary一段XML DOM树; 例如

void processData(Parameters reportParams);

有了这个尤伯杯通用的方法:

  • 错误是不太可能在编译时或目测的代码,并在运行时将浮出水面,这使得它们难以追查被发现。
  • 代码将不易阅读,少自我记录因此很难使用或实现。
  • 因为在内部它需要分解这个“参数”对象为特定的使用情况,并对其进行处理的API的实现将变得丑陋。


Answer 6:

A按 - 实用API设计 - 一个Java架构师的自白 - 2008

务实 - 面向接口设计 - 2006年



Answer 7:

阅读有效的Java通过乔希布洛赫。 这本书对于任何Java程序员是伟大的,但也解决了很多周围的一个有用的API创建的问题。



Answer 8:

结帐这个播客

其对有关API设计一些非常好的概念会谈。



Answer 9:

您可以实现以下原则:

1)使用建立的或公知的方法,实施例:

createPatientRecord();
createPatientAppointment();
createPatientCheckup();

2)返回值:

  • 如果抛出任何异常
  • 如果没有找到对象,返回null
  • 如果几个对象,返回空列表不为空

3)一致的参数顺序/序列

recallPatientRecord(long patientId, long hospitalId);
recallPatientRecord(long patientId);
recallPatientRecord(long patientId, long hospitalId, int disciplineCode);


Answer 10:

这个问题几乎是不可能的回答。 它甚至有可能不会是堆栈溢出适当的问题(人答:我怎么解决具体问题的人?B:这是这个确切的答案)。

1.什么是最好的实践和模式应遵循的设计的API

什么编程语言,我们谈论的? 哪些领域的问题域的,我们谈论的? 因为什么工作对一个编程语言/问题域可能在另一种编程语言/问题域很好地工作。

2.How实现实现隐藏的最佳方式(C ++ / Java的)

有一个问题的答案,这是太长写在这里。 事实上,它是那么的漫长,一个网站引用是不够的。 有很多网站和书籍,组合在一起时,会回答这个问题。 哦,我只是在谈论C ++。 重复Java中全过程。 而对于C#,并为Python,和...(等)

其与实施例整齐初学者引导4.Any参考书/链接

选择一个编程语言。 然后,我可以提供书籍和链接引用。 由于弗雷德·布鲁克斯写道,没有银弹。 没有,你可以从编程语言编程语言单一的心态。 是什么让一个很好的API中的一个编程语言将是另一种编程语言中的设计错误。 相信我,我才知道这个很难,为什么试图跨越这些语言运用C ++,Delphi和Java的成语。 这导致不好的API和糟糕的代码。

也有设计的API思想的竞争学校。 而且,不幸的是,现实情况是,没有人是100%正确的。 事实上,你成为当你知道思想的多所学校,并知道什么时候思想的特殊学校适用于一个特定的问题有很大的API设计。



文章来源: Designing a better API?