C++ API设计

[美] Martin Reddy

出版时间

2013-07-31

ISBN

9787115322999

评分

★★★★★

标签

编程

书籍介绍
这本书真正的价值,不在它告诉你'好的API该有什么特点',而在它逼你面对一个残酷现实:API设计最难的从来不是写代码,而是如何在多年之后依然守住今天的承诺。Martin Reddy把'隐藏实现细节'这件事拆得极细——物理隐藏、逻辑隐藏、隐藏成员变量、隐藏实现类,每一步都对应着编译速度、二进制兼容性、耦合度这些会被时间放大的代价。书中对Pimpl惯用法的剖析尤为扎实:何时该用私有嵌套类、何时必须把私有虚函数留在公开类、深浅拷贝该如何取舍,都是踩过坑的人才会纠结的细节。它适合那些要维护一个长期项目、被'改一处崩一片'折磨过的开发者,也适合愿意反复啃的第二遍读者。唯一的前提:别指望它跟上最新语言特性,它教的是更底层、更不易过时的判断力。
作者简介
作者简介: 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、开源软件与技术写作。
AI导读
核心看点
  • 系统讲解C++ API设计原则与最佳实践
  • 深入剖析Pimpl惯用法等核心设计模式
  • 涵盖版本控制、文档化及脚本绑定策略
读者共识
  • 被誉为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."
目录
目 录
第1章 API简介  1
1.1  什么是API  1
1.1.1  契约和承包人  2

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