
viii
|
前言
了呢?对整个过程进行这样的划分是有原因的 :我们人类不擅长处理高复
杂性的事项,对于出版图书或其他商业项目来说,将其分解为单个职责(比
如“写作”“润色文字”“审校技术问题”“改正语法错误”“排版”,或“图
书发行”),能简化复杂项目参与者的工作,让流程变得更简单。
出版图书仅仅是一个例子——其实对任何事情都可以这么处理。从你桌上
选一样物品,随便选什么都行,思考它是怎么来到你的桌上的。接着,把
目光放远,想一下 :它是怎么生产出来的?由什么制成?有多少人参与了
它的制作、组装、打磨,并将它送到商店?你选的这个东西是水果吗?有
多少人参与果树的种植、灭虫、修剪枝叶、打包果实,再把它送到商店?
我们身边充斥着各种复杂性,软件也不例外。从微观的层面来看,存在物
理常量所框定的局限性,比如光速、比特、硬件、中断调用、汇编语言等 ;
而从宏观层面来看,你可能会看到比如一个巨型技术部门,处理从查询到
支付的整个过程。我们开发者和所负责的项目就身处在这些复杂性中。
平时,我们不太可能会停下来思考日常事物和交互中的复杂性,因为这样
做会使人寸步难行。相反,我们把解决方法隐藏在抽象的接口之后,以至
于我们的大脑就认为它们是接口。其中一些接口很好地映射到被抽象出来
的实现中,让人觉得好用。而另一些则不然,它们让人觉得疑惑和沮丧。
软件也是这样。我们不用考虑整个系统,实际上我们打交道的那些东西都
被封装在接口里,而这些接口比其背后的具体实现更易理解和使用。
目标读者
这本书面向专业开发者、业余爱好者、掌握一定
JavaScript ...