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/

你可能感兴趣的:(api)