C++ API设计 - [美] Martin Reddy

C++ API设计

[美] Martin Reddy

出版时间

2013-07-31

ISBN

9787115322999

评分

★★★★★

标签

编程

书籍介绍

现代软件开发中的一大难题就是如何编写优质的API。API负责为某个组件提供逻辑接口并隐藏该模块的内部细节。多数程序员依靠的是经验和冒险,从而很难达到健壮、高效、稳定、可扩展性强的要求。Martin Reddy博士在自己多年经验基础之上,对于不同API风格与模式,总结出了API设计的种种最佳策略,着重针对大规模长期开发项目,辅以翔实的代码范例,从而有助于设计决策的成功实施,以及软件项目的健壮性及稳定性的实现。

主要内容:

API简介及其特点

API的一些设计模式及惯用法

影响API的设计的一些C++特性

把控API的风格与性能

版本控制与文档化的实现

各种优秀的测试方法

如何创建脚本绑定,以便API能被诸如Ruby和Python等语言调用

可扩展性API的基本实现方式

类库的编译器实现

AI导读
核心看点
  • 系统讲解C++ API设计原则与最佳实践
  • 深入剖析Pimpl惯用法等核心设计模式
  • 涵盖版本控制、文档化及脚本绑定策略
适合谁读
  • 从事C++框架或类库开发的资深工程师
  • 希望提升代码健壮性与可维护性的开发者
  • 对软件架构设计及接口规范感兴趣者
读前提醒
  • 部分技术细节可能随C++标准演进而需更新
  • 建议结合现代C++特性批判性阅读旧内容
  • 理论较多,建议配合实际项目代码对照学习
读者共识
  • 被誉为C++ API设计领域的经典指南之作
  • 前五章价值极高,后部分被指略显陈旧
  • 适合框架开发者,初学者可能觉得门槛高

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "Use the pimpl idiom to keep implementation details out of your public header files."
  • "When using the pimpl idiom use a private nested implementation class. Only use a public nested Impl class (or a public non-nested class) if other classes or free functions in the .cpp must access Impl members. 1. You can’t hide private virtual methods in the implementation class. These must appear i"
  • "Make your class uncopyable.----------可以使用boost的noncopyable,实现机制实际上就是,对于拷贝构造函数声明为私有就可以了。 Explicitly define the copy semantics. ----------If you do want your users to be able to copy your pimpledobjects, then you should declare and define your own copy constructor and assignment operator.These can the"
  • "Think about the copy semantics of your pimpl classes and consider using a smart pointer to manage initialization and destruction of the implementation pointer."
  • "1.Information hiding. 2.Reduced coupling. 3.Faster compiles. 4.Greater binary compatibility. 5.Lazy Allocation."
  • "The primary disadvantage of the pimpl idiom is that you must now allocate and free an additional implementation object for every object that is created. if you are concerned with the memory allocator performance, then you may consider using the “Fast Pimpl” idiom (Sutter, 1999) where you overload th"
  • "A Singleton is a more elegant way to maintain global state, but you should always question whether you need global state. Declare the constructor, destructor, copy constructor, and assignment operator to be private (or protected) to enforce the Singleton property."
  • "it would be dangerous to initialize our singleton using a non-local static variable."
作者简介
作者简介: Martin Reddy 博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics。另外,他还是ACM以及IEEE的会员。 早年,他曾在SRI International供职5年,主要从事分布式三维地形可视化技术方面的工作,他成功创建了在Web上描述3D地球空间信息模型的ISO标准,并且还连续两年被选为Web3D协会的会长。 他曾在Pixar动画工作室工作过6年,担任内部动画系统的首席工程师,设计并实现了很多高性能API,这些API在一些奥斯卡获奖及提名影片的制作中都发挥了关键作用,这些影片有《海底总动员》、《超人总动员》、《赛车总动员》、《料理鼠王》,以及《机器人总动员》等。 他还开办了一家咨询公司Code Reddy,为各家软件公司提供技术咨询,主要客户有Linden Lab和Planet 9 Studios,为大型在线3D虚拟世界《第二人生》设计了API并改善了其基本架构。 现在他担任ToyTalk公司的首席技术官。 译者简介: 刘晓娜 中国科学院计算技术研究所员工,在职博士,从事网络大数据采集及挖掘方面的研究,爱好读书、翻译和旅游。 臧秀涛 硕士毕业于中国科学院计算技术研究所。曾从事网络游戏、操作系统方面的开发工作。热爱技术、读书和翻译。 林健 中国科学院计算技术研究所博士生,从事机群与网格计算方面的研究,爱好DIY、开源软件与技术写作。
目录
目 录
第1章 API简介  1
1.1  什么是API  1
1.1.1  契约和承包人  2

显示全部
用户评论
工具
匆匆浏览了一遍,理论性的东西太多
设计良好的API是非常困难的,需要多年浸淫于框架设计领域,才能体会其精华所在,fighting
这本书太好了,值得看多遍。从API的设计,到细节技巧,还有后面的测试,和二进制兼容,和相关库的制作等等
太水了没有用
有用的内容不太多,内容也偏老
对 API 的介绍挺有意思的,不过很多内容估计我暂时是用不上了
优秀的人用优秀的API写优秀的代码
觉得不错,比较推荐,从中学到很多经验,也解决了在看开源代码时的一些困惑。 系统地介绍了api开发的各个维度的最佳(或实用)实践,并不是在软件开发的每个点都很详细,但是这未必不是作者的本意,作为API的开发者,最重要的是具有api开发的审美和意识,也即知道什么是好的API。 作者是具有丰富api开发经验的老兵,翻译质量可以。 【适合读者】具有一定C++开发经验的读者 【阅读方式】通读,其中第二章精读。且第二章非C++开发也可以读。
下载
收藏