`
blues1021
  • 浏览: 141134 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Joshua Bloch访谈:API对设计流程的影响小结

 
阅读更多

一:数学与程序
数学归纳法和递归的例子,
但是我认为离散的东西比连续的东西更重要
二:散文与编程
编程是不同技能的组合。web开发更加注重用户感受,库、编译器以及底层框架也需要代码可读、可维护注重逻辑思维。
三:API对设计流程的影响
1.需求分析的重要性怎么强调也不过分。获取用例图。 你就有了用来比较所有备选解决方案优劣的基准。
2.然后编写骨架API。 骨架API应该很短很短,也就一页纸的内容吧,一般正好是一页,无需非常精确。你要声明包、类和方法 ,如果还不清楚他们应该是什么样的话,可以放一句话的描述。不过这不是产品发布要求的那种质量文档。
 中心思想就是在这个阶段保持敏捷,逐步完善API,使其满足用例,为原始的API添加代码,看是否可以满足需求。真是不可思议,很多事情事后看真是太浅显了,但设计API的时候,甚至是构思用例时,你还是会犯各种错误。用代码实现用例时你会说:“哦,我的天,全都错了。类太多了。这些可以合并,这些需要拆开。”或者类似这样的话。好在API文档只有一页长,改起来也很容易。
  你对API越来越有信心,代码也就越写越长。但是,核心原则是,先写使用API的代码,然后再写实现它们的代码。 因为,如果实现代码被废弃,之前的工作就都白做了。事实上,应该在给出设计规范前写API的代码,否则你可能把时间浪费在给最后完全不需要的东西设计规范上。这就是我设计软件的方法。
四:API的设计:
我敢说比你想的要粗略多了。任何复杂的编程都需要API设计,因为大程序都需要模块化,你必须设计模块之间的接口。
  优秀的程序员把问题分块,孤立地去看他们。 这样做的理由有几条。比如,你可能会在无意中创造出好用的、可重用的模块。如果你写一个单一的系统,它越来越大,等你想分块的时候,就无法找到清晰的边界,最后系统就变成了一个无法维护的垃圾。所以我断言,无论你是否把自己看成API设计者,把问题分块都是最好的编程方法。
  某种程度上,我谈的就是测试先行编程,以及对API的重构。如何测试你的API呢?在实现API之前编写它的测试用例。虽然我还不能运行用例,但我在进行测试先行的编程:实现用例后看API是否能完成任务,我用这样的方法测试API的质量。
 所以,我谈得更多的是测试先行编程和对API的重构 ,而不是重构API的实现代码。
 API设计有一条基本原则:疑则不用。
 我最喜欢的一条是:“简单没那么容易做到。

他坚信,只有仔细推敲要做的东西,系统才会有合理的形状和结构。
五:java看法:
我不是对某件事物特别虔诚的那种人。能用就好。使用更现代的编程语言更有效率,而且更现代化的编程语言更安全、更便利,表达能力更强。在大多数情况下,程序员的时间比计算机的时间更宝贵。
现在程序员们使用的现代语言效率都差不多,如果有人说他们的语言效率高十倍,那么多半是在骗你。现在,Google用Java写的代码比以前多多了。
试图把索引服务器的内循环用Java改写很愚蠢,不值得称道。
我估计微软也面对这样的问题,就是他们的思维能否超越桌面PC系统。
事实上Google在很多核心功能上使用Java,甚至包括广告。 所以某种程度上,他们知道Java既快又可靠。但是在实际的搜索流程中,对机器循环最敏感的领域,所有的东西都基于C++,这么做很明显的一个原因就是公司的“基因”。这将在很长一段时间里影响着我们。

原文参考:http://www.programmer.com.cn/4461/

分享到:
评论

相关推荐

    Google首席工程师Joshua Bloch谈如何设计优秀的API

    Google首席工程师Joshua Bloch,作为Java语言和库的主要设计师之一,对API设计有着深厚的理解和丰富的经验。在他的讨论中,我们可以提取出以下几个关键知识点: 1. **明确目标**:API设计首先要明确其目标和用途。...

    Joshua Bloch访谈录.doc

    Joshua Bloch和Neal Gafter在加入Google之前,都在Sun Microsystems担任资深工程师,对Java核心和类库开发有着显著贡献。他们共同撰写了《Java Puzzlers》一书,而Bloch还著有广受欢迎的《Effective Java》。他们的...

    读书笔记:Effective Java 中文版(第2版)总结 (美)Joshua Bloch 著.zip

    读书笔记:Effective Java 中文版(第2版)总结 (美)Joshua Bloch 著

    完美API good API - keynote

    Joshua Bloch强调了对API设计重要性的深刻理解,并提供了设计良好API的一些关键原则和实践。他提出的观点不仅适用于专业的API开发者,也适用于所有编写模块化代码的程序员。此外,他对设计过程的细节描述,包括搜集...

    2009年的JavaOne大会上,Joshua Bloch和Neal Gafter又为我们带来的7道谜题

    在2009年的JavaOne大会上,知名Java专家Joshua Bloch和Neal Gafter共同提出了一系列有趣的编程谜题,旨在挑战参会者对Java语言特性的理解。这些谜题涵盖了一些核心概念,例如字符串处理、集合操作以及迭代器的实现。...

    joshua_import:Joshua Project数据导入到本地JSON

    LIMIT是每次通过Joshua Project API时要获取的行数,1-1000,默认值: 1000 INDIVIDUAL如果已定义),则为返回的每个人员组行输出单独的JSON文件,默认值: false MINIMIZED如果定义,输出.min.json文件,否则...

    JavaPuzzlersTalk:该存储库保存着该项目,该项目实现了一些小程序,这些小程序实现了约书亚·布洛赫(Joshua Bloch)的Java益智书中有关代码训练营演讲的精选益智游戏

    该存储库保存着该项目,该项目实现了一些小程序,这些小程序实现了Joshua Bloch和Neal Gafter的Java Puzzlers书中的精选难题,并且打算用于Code Camp讲座。 可以通过获得《 Java拼图-陷阱,陷阱和特例》一书,如果...

    How to Design a Good API.doc

    本文将基于Joshua Bloch的演讲《如何设计良好的API以及为何重要》来探讨一些关键的设计原则。 1. 模块化设计:模块化是良好代码的基础,每个模块都应有自己的API。通过模块化,我们可以将复杂的问题分解为更小、更...

    编程人生_15位软件先驱访谈录【高清版】

    包括donaldknuth、jamie zawinski、joshua bloch、ken thompson 等在内的业界传奇人物,为我们讲述了他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法,并对诸如应该如何设计软件等长久以来一直...

    How-to-Design-a-Good-API-and-Why-it-Matters:约书亚·布洛赫 (Joshua Bloch) 在

    API设计流程 收集需求:提取用户话语背后真实的需求,用户案例 及早和经常更新API:单元测试 写下服务提供接口非常重要:至少3个插件 一般规则 API应当只做一件事情并且要做好. 实现细节不应该影响API本身. //设计API和...

    How to design API

    根据提供的文件信息,“如何设计API”这一主题由谷歌公司的Joshua Bloch主讲,他分享了一系列关于API设计的经验与原则,这些原则对于软件工程师来说具有极高的参考价值。 ### 一、所有程序员都是API设计师 这个...

    effective-java:我正在关注Joshua Bloch撰写的有效Java一书

    《有效Java》是由著名程序员和Java专家Joshua Bloch撰写的一本经典编程书籍,它为Java开发者提供了许多实用且深入的编程建议,旨在帮助我们编写出更高效、更可靠、更易于维护的Java代码。这本书包含了37个条目,每个...

    编程人生:15位软件先驱访谈录(美)赛贝尔

    包括Donald Knuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在内的业界传奇人物,为我们讲述了他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法,并对诸如应该如何设计软件等长久以来一直...

    password_manager-joshua-saunders:GitHub Classroom创建的password_manager-joshua-saunders

    标题 "password_manager-joshua-saunders" 指向的可能是一个个人项目,由GitHub用户Joshua Saunders创建,用于管理密码。这个项目是通过GitHub Classroom建立的,可能是一个教学或学习环境中的作业或示例代码。由于...

    joshua-sample:约书亚样本回购

    样本自述文件 在这里输入内容该存储库只是一个示例创建它的唯一目的是演示和探索github及其功能由您真正创造

    1_Effective_Java_2nd_Edition_proglib_java_Joshua_

    《Effective Java》是Java编程领域的一本经典著作,由知名程序员和计算机科学家Joshua Bloch撰写。这本书的第二版深入探讨了如何编写高效、可维护的Java代码,并提供了许多实用的编程指南和最佳实践。以下是根据标题...

    Java 专业人士必备书籍和网站列表

    2. **《Effective Java》**(作者:Joshua Bloch):这是一本关于Java编程最佳实践的权威指南,书中涵盖了许多其他教材未涉及的高级主题,如equals()的覆盖和接口与抽象类的使用。 3. **《The Java Programming ...

    joshua-paup:我的个人网站的存储库

    这是原型的一个小预览: 我希望通过最小化密集文本,使用图标并将所有内容保留在单个页面中,来尽可能地保持用户友好。 在设计此原型时,我没有考虑长滚动的单个网页(最好是现在就在原型中而不是稍后再弄清楚!...

    Java学习必备的书籍和网站列表

    2. **《Effective Java》** (作者:Joshua Bloch):这本书是理解Java编程最佳实践的权威指南,涵盖了其他基础教程中鲜有涉及的主题。Bloch作为Sun Microsystems的Java平台库架构师,对语言的理解非常深入,他的建议...

    Coders_at_Work

    - Joshua Bloch:Java平台架构师,《Effective Java》一书的作者。 - Joe Armstrong:Erlang编程语言的发明者。 - Simon Peyton Jones:Haskell编程语言的主要贡献者之一。 - Peter Norvig:Google研究部门的...

Global site tag (gtag.js) - Google Analytics