Joshua Bloch关于API设计的Keynote
API设计的过程
Gather Requirements–with a Healthy Degree of Skepticism:以use cases的形式。
Start with Short Spec–1 Page is Ideal:让越多的人参与越好,随着信心的增加不断扩充。
Write to Your API Early and Often:在实现API之前,在描述之前,扩充之后继续编写
Writing to SPI is Even More Important:在发布之前先写至少3个插件
Maintain Realistic Expectations:多数API设计都限制过多,有犯错误的心理准备
通用原则
API Should Do One Thing and Do it Well:功能应该容易说明
API Should Be As Small As Possible But No Smaller:有疑问的时候就忽略,追求power-to-weight比
Implementation Should Not Impact API:不要让实现细节泄漏到API中
Minimize Accessibility of Everything:最大化信息隐藏
Names Matter–API is a Little Language:名字应该是顾名思义的;一致的;代码应该像散文
Documentation Matters
Document Religiously:仔细的说明状态空间
Consider Performance Consequences of API Design Decisions:坏的决策影响性能;不要wrap API来获取性能
Effects of API Design Decisions on Performance are Real and Permanent
API Must Coexist Peacefully with Platform
类设计
Minimize Mutability:如果只能是mutable的,保证小的状态空间
Subclass Only Where It Makes Sense:不能为了容易实现,就让一个Public类继承另外一个Public类。
Design and Document for Inheritance or Else Prohibit it:继承违背了封装
方法设计
Don’t Make the Client Do Anything the Module Could Do
Don’t Violate the Principle of Least Astonishment
Fail Fast–Report Errors as Soon as Possible After They Occur:编译时刻最好;运行时刻,第一次坏方法调用的时候
Provide Programmatic Access to All Data Available in String Form:否则,客户端代码必须解析字符串
Overload With Care:避免模糊的overloadings;如果必须提供,保证相同的参数有相同的行为
Use Appropriate Parameter and Return Types:Favor interface types over classes for input;Use most specific possible input parameter type;Don’t use string if a better type exists;Don’t use floating point for monetary values;Use double (64 bits) rather than float (32 bits)
Use Consistent Parameter Ordering Across Methods
Avoid Long Parameter Lists:3个或更少最好
Avoid Return Values that Demand Exceptional Processing
异常设计
Throw Exceptions to Indicate Exceptional Conditions:不要迫使客户端代码使用异常来控制流程;不要悄无声息的失败
Favor Unchecked Exceptions
Include Failure-Capture Information in Exceptions
分享到:
相关推荐
Google首席工程师Joshua Bloch,作为Java语言和库的主要设计师之一,对API设计有着深厚的理解和丰富的经验。在他的讨论中,我们可以提取出以下几个关键知识点: 1. **明确目标**:API设计首先要明确其目标和用途。...
演讲者是谷歌的资深软件工程师Joshua Bloch,他通过这场演讲分享了关于如何设计一个好的API以及为什么API设计重要的知识。 在讨论API设计的重要性时,Joshua Bloch提出了几点关键的理由: 1. API可能是一个公司最...
Joshua Bloch和Neal Gafter在加入Google之前,都在Sun Microsystems担任资深工程师,对Java核心和类库开发有着显著贡献。他们共同撰写了《Java Puzzlers》一书,而Bloch还著有广受欢迎的《Effective Java》。他们的...
读书笔记:Effective Java 中文版(第2版)总结 (美)Joshua Bloch 著
在2009年的JavaOne大会上,知名Java专家Joshua Bloch和Neal Gafter共同提出了一系列有趣的编程谜题,旨在挑战参会者对Java语言特性的理解。这些谜题涵盖了一些核心概念,例如字符串处理、集合操作以及迭代器的实现。...
该存储库保存着该项目,该项目实现了一些小程序,这些小程序实现了Joshua Bloch和Neal Gafter的Java Puzzlers书中的精选难题,并且打算用于Code Camp讲座。 可以通过获得《 Java拼图-陷阱,陷阱和特例》一书,如果...
根据提供的文件信息,“如何设计API”这一主题由谷歌公司的Joshua Bloch主讲,他分享了一系列关于API设计的经验与原则,这些原则对于软件工程师来说具有极高的参考价值。 ### 一、所有程序员都是API设计师 这个...
API设计流程 收集需求:提取用户话语背后真实的需求,用户案例 及早和经常更新API:单元测试 写下服务提供接口非常重要:至少3个插件 一般规则 API应当只做一件事情并且要做好. 实现细节不应该影响API本身. //设计API和...
《有效Java》是由著名程序员和Java专家Joshua Bloch撰写的一本经典编程书籍,它为Java开发者提供了许多实用且深入的编程建议,旨在帮助我们编写出更高效、更可靠、更易于维护的Java代码。这本书包含了37个条目,每个...
本文将基于Joshua Bloch的演讲《如何设计良好的API以及为何重要》来探讨一些关键的设计原则。 1. 模块化设计:模块化是良好代码的基础,每个模块都应有自己的API。通过模块化,我们可以将复杂的问题分解为更小、更...
《Effective Java》是Java编程领域的一本经典著作,由知名程序员和计算机科学家Joshua Bloch撰写。这本书的第二版深入探讨了如何编写高效、可维护的Java代码,并提供了许多实用的编程指南和最佳实践。以下是根据标题...
包括donaldknuth、jamie zawinski、joshua bloch、ken thompson 等在内的业界传奇人物,为我们讲述了他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法,并对诸如应该如何设计软件等长久以来一直...
Joshua Bloch作为Java平台的API设计者之一,不仅对Java语言有着深刻的理解,更对如何正确使用这些API来编写有效、健壮且高效的代码有着独到的见解。由于其在书中提供的大量实用建议,因此被许多Java专家和从业人士所...
Joshua Kerievsky写的一本和GOF的设计模式、Martin Fowler重构-改善即有代码的设计齐名的著作! 因上传权限问题,本书压成了二部分,此为第2部分
Effective Java中文版(第2版), by Joshua Bloch. 尽管有这么多丰富的资料,有时我感觉,有很多的程序员仍然不太明白Java泛型的功用和意义。这就是为什么我想使用一种最简单的形式来总结一下程序员需要知道的关于...
《Refactoring to Patterns》是Joshua Kerievsky所著的一本专业书籍,主要内容涉及软件设计中的重构和模式应用。本书详细介绍了通过一系列低级重构来安全地将设计向特定模式实现移动、靠近或远离的方法。Kerievsky以...
《Java解惑》是由Joshua Bloch(美)、Neal Gafter(美)编著,陈昊鹏翻译的计算机语言类丛书,该书由人民邮电出版社2006年发行出版。该书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序...
《Java Puzzlers Sampler》是由Java领域的权威专家Joshua Bloch和Neal Gafter共同编著的一本书,书中收录了一系列令人困惑、出乎意料的Java编程问题,旨在帮助开发者更好地理解和避免这些潜在的陷阱。书中的...
本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合...