C++API设计 - 笔记
Contents
从书名看是关于设计C++接口的书,内容却不仅仅是关于C++接口设计。书还算实用,但如果看过代码大全和Effective系列的话,可以不用在看这本书了。
笔记
P91 重构就像汽车高速行驶时更换引擎,但还不能停车
P103 API的第一个发行版本很重要
P115 LISKOV替换原则指出,如果S是T的子类,那么在行为上,S不需要修改就可以替换T类型的对象
P117 私有继承、Was-a的关系
P119 开发封闭原则是一种启发式的原则,则不是必须遵守的
P121 一个好的名字往往可以表达类的意图,如果一个类难以命名,这往往是缺乏设计的信号
P122 函数尽量使用正面的概念命名,比如IsConnect而不是IsUnConnect
P132 C API比C++ API具有更好的二进制兼容性
P140 可以使用预处理器技术模拟模板
P176 避免使用友元,这往往意味这糟糕的设计
P182 如果没有必要使用Dynamic_Cast则常见的做法是关闭运行时信息生成
P182 不要猜测性能瓶颈的位置
P183 传值可能会导致对象切割而引起莫名其妙的问题
P185 不应该前置声明STL的类型
P192 C++11中一个构造函数可以调用其他的构造函数
P192 对象越小,就越适合缓存
P197 Donald Knuth有句名言:过早优化是万恶之源
P211 Linux 的奇数版本号代表开发版本
P216 如果确实需要做二进制不兼容,则需要考虑给信库起个新名字。比如zlib.dll -> zlib1.dll
P225 弃用标记:__declspec(deprecated)
P250 时间驱动、质量驱动和功能驱动
P257 性能测试的结果是实数而不是简单的真和假
P264 驱动测试开发的好处是推动你考虑接口会被如何调用
P286 SWIG
P286 任何脚本绑定技术都是建立在适配器模式上的
P286 Boost.Python支持Boost和Python的互相交互
P265 模拟对象又可以简单称为MOCK
P339 每个DLL有相应的到入库lib文件,虽然静态库和导入库的格式都是lib但他们的文件类型是不同的
License 知识共享署名 3.0 中国大陆许可协议