《C++ API 设计》——写给想写好类库的程序员

“借助在大规模、协作性软件项目方面的经验,Martin Reddy介绍了对个体开发者和开发组织都有实际价值的模式与实践。《C++ API设计》探索了常常被忽视的技术性和非技术性问题,有助于推动成功的设计决策,从而产生高质量的,健壮的,而且可以长期使用的API。”

——Eric Gregory,Pixar动画工作室软件架构师

enter image description here


API是应用编程接口的缩写。API开发在现代软件开发中随处可见,其目的是为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。有些API用起来很顺手,而有些则用起来让人摸不着头脑,更有些让人直接弃用。编写优质的API非常困难。大多数人的经验都源于不断犯错或借鉴别人的经验,而本书试图打破这种局面,提炼出耐用且不会过时的API设计策略。API有哪些品质要求,有哪些关键要素,有哪些通用的技巧,设计时要遵循哪些原则……这些问题都能在本书中找到答案。

本书主要内容。

  • 第1章:API简介。阐释API的概念及其独特之处,概览全书内容。
  • 第2章:特征。解答优秀API应具备的特点。
  • 第3章:模式。着眼于一些特定的API设计模式和惯用法,包括Pimpl惯用法、单例(singleton)、工厂方法(factory method)、代理(proxy)、适配器(adapter)、外观(facade)模式以及观察者(observer)模式。
  • 第4章:设计。讨论功能需求的收集和使用用例建模推动简洁有用的接口的设计,以及一些面向对象分析和设计的技术。这一章也将讨论大型软件项目所面临的诸多问题。
  • 第5章:风格。叙述各种风格的C和C++ API,如纯C API、面向对象API、基于模板的API以及数据驱动的API。
  • 第6章:C++的用法。讨论各种能够影响良好API设计的C++语言特性,如良好构造函数和操作符风格、命名空间、指针和引用参数的比较、友元的使用以及如何在动态库中导出符号。
  • 第7章:性能。分析API的性能问题并说明如何使用C++构建高性能的API。
  • 第8章:版本控制。主要讨论API版本控制以及如何保持向后兼容性。
  • 第9章:文档化。通过具体示例,借助优秀的Doxygen工具,阐述给API添加注释以及编写文档的技巧。
  • 第10章:测试。介绍各种类型的自动测试,包括单元测试、集成测试和性能测试,同时列举一些可以在项目中使用的优秀的测试方法。
  • 第11章:脚本化。讨论如何为C++ API创建脚本绑定,以便此API能够被诸如Python和Ruby等语言调用。
  • 第12章:可扩展性。介绍如何编写可扩展的API,以便让程序员编写定制的C++插件以扩展其所提供的基本功能。这一章还会讲解如何使用继承和模板创建可扩展的接口。
  • 附录A:库 。本书以如何创建静态和动态库的附录作为结尾,讨论静态库和共享库之间的不同,并演示如何使用编译器生成这些库,以使你的代码能在其他应用中重用。

enter image description here

Martin Reddy博士是Code Reddy公司的CEO。他拥有计算机科学的博士学位以及在软件行业超过15年的从业经验。在此期间,Reddy博士撰写了40多篇论文,发表了3项软件专利,并与人合著了Level of Detail for 3D Graphics。他还是ACM以及IEEE的会员。

Reddy博士曾在Pixar动画工作室工作过6年,他是该工作室的内部动画系统的首席工程师。他设计并实现了很多高性能的API,这些API在一些奥斯卡获奖影片及提名电影的制作中大放异彩,这些电影包括:《海底总动员》、《超人总动员》、《赛车总动员》、《美食总动员》,以及《机器人总动员》等。

随后他在Bakery动画工作室担任技术经理,并领导了这家创业公司的动画软件开发,其工作包括设计与实现很多关键的API及制定整体的动画工作流和用户界面。

Reddy博士在他早期职业生涯中曾在SRI International供职5年,主要从事分布式三维地形可视化技术相关的工作,该工作包括几个开源地球空间信息API的开发。他成功创建了在Web上描述3D地球空间信息模型的ISO标准,并且还连续两年被选为Web3D协会的会长。

Reddy博士开办了一所咨询公司,旨在为不同的软件公司提供技术咨询,他的客户包括Linden Lab和Planet 9 Studios。前者涉及开源项目Second Life(第二人生)的API设计和基本架构的改进。Second Life是一个在线的3D虚拟世界,在全球已经有上千万人用户。

01YZB1KbieLR

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14730899/viewspace-1060886/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14730899/viewspace-1060886/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值