1.3.2 代码复用
代码复用就是使用已有的软件去构建新的软件。这是现代软件开发所追求的一个神圣的目标。API提供了一种代码复用的机制。
在早期的软件开发中,有种情况很常见,即公司不得不为其制作的任一应用编写所有代码。如果某个程序需要读取GIF图片或者解析文本文件,公司不得不自己编写全部代码。如今,随着优秀的商业库和开源库的增多,重用别人已经编写过的代码变得非常简单。举例来说,如今已经有各种开源的读取图像的API和解析XML的API供人们下载和使用。这些库被世界上许多程序开发人员不断地改进和调试,同时也已经在很多其他程序中被实践检验过。
通过使用不同的组件(它们用于构建应用程序各个模块)并借助组件已发布的API相互通信,软件开发从本质上已变得更加模块化。这种做法的好处是不需要了解每个软件组件的所有细节,如同前面提到的建造房屋的比喻,可以将很多细节问题委托给专业承包商。这样能够缩减开发周期,这一方面是因为可以重用已有的代码,另一方面则因为可以将各种组件的开发计划分离,还可以让开发者把重点放在核心业务逻辑上,而不必浪费时间重新发明轮子。
然而,实现代码复用的一个障碍是,常常需要比原本计划更加通用的接口,因为其他客户可能有额外的期望和需求。因此有效的代码复用来自对软件客户的深入了解以及结合了客户和自身利益的系统设计。
C++(www.cppentry.com) API和Web
依赖第三方API的应用程序在云计算领域里越来越普遍。该领域中,Web应用越来越依赖Web服务(API)为其提供核心功能。对于Web Mashup应用,应用程序本身有时仅仅是对多种已有服务进行再次封装,从而提供新的服务。例如,将Google地图API和本地犯罪统计数据库相结合就可以为犯罪数据提供一个基于地图的界面。
实际上,花一些时间强调C++(www.cppentry.com) API设计在Web开发中的重要性是值得的。肤浅的分析可能得出这样的结论:服务器端的Web开发局限于脚本语言,诸如PHP、Perl、Python(即流行的LAMP架构缩写中的"P"),或者基于Microsoft ASP(动态服务器页面)技术的.NET语言。对于小规模的Web开发可能确实如此,然而值得注意的是,许多大规模的Web服务器都使用C++(www.cppentry.com)实现的后台服务,以求最佳性能。
事实上,Facebook开发过一款名为HipHop的产品,它将PHP代码转换为C++(www.cppentry.com),以此改善社交网站的性能。因此C++(www.cppentry.com) API设计在可扩展的Web服务开发中确实占有一席之地。此外,使用C++(www.cppentry.com)开发核心API不仅可以构建高性能的Web服务,而且这些代码还可以在诸如桌面或移动版本等其他形式交付的产品中重用。
说句题外话,对于这种软件开发策略的转变,一种可能的解释是全球化推动的结果(Friedman, 2008;Wolf,2004)。实际上,互联网、标准网络协议和Web技术的汇聚已经创造了一个软件竞技平台。这使得来自世界各地的公司和个人都可以在大型复杂软件项目中进行创造、贡献和竞争。这种形式的全球化促成了一种环境,在该环境下,全世界的公司和开发者能够以开发软件子系统为生。世界各地的其他组织进而可以通过组合与扩展这些构建模块,创建解决特定问题的最终用户应用程序。就本书讨论的焦点而言,API提供了促成现代软件开发全球化和组件化的机制。