图书介绍
C++ API设计PDF|Epub|txt|kindle电子书版本网盘下载
- (美)MARTINREDDY著;刘晓娜,臧秀涛,林健译 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115322999
- 出版时间:2013
- 标注页数:363页
- 文件大小:135MB
- 文件页数:378页
- 主题词:C语言-程序设计
PDF下载
下载说明
C++ API设计PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章API简介1
1.1什么是API1
1.1.1契约和承包人2
1.1.2 C+++中的API3
1.2 API设计上有什么不同4
1.3为什么使用API5
1.3.1更健壮的代码6
1.3.2代码复用6
1.3.3并行开发8
1.4何时应当避免使用API9
1.5 API示例10
1.5.1 API层次10
1.5.2真实示例12
1.6文件格式和网络协议13
1.7关于本书15
第2章 特征17
2.1问题域建模17
2.1.1提供良好的抽象17
2.1.2关键对象的建模19
2.2隐藏实现细节20
2.2.1物理隐藏:声明与定义20
2.2.2逻辑隐藏:封装22
2.2.3隐藏成员变量23
2.2.4隐藏实现方法26
2.2.5隐藏实现类28
2.3最小完备性29
2.3.1不要过度承诺29
2.3.2谨慎添加虚函数30
2.3.3便捷API31
2.4易用性33
2.4.1可发现性34
2.4.2不易误用34
2.4.3一致性36
2.4.4正交38
2.4.5健壮的资源分配40
2.4.6平台独立43
2.5松耦合44
2.5.1仅通过名字耦合45
2.5.2降低类耦合45
2.5.3刻意的冗余47
2.5.4管理器类48
2.5.5回调、观察者和通知50
2.6稳定的、文档详细且经过测试的API53
第3章 模式54
3.1 Pimpl惯用法55
3.1.1使用Pimpl56
3.1.2复制语义59
3.1.3 Pimpl与智能指针60
3.1.4 Pimpl的优点61
3.1.5 Pimpl的缺点62
3.1.6 C语言的不透明指针62
3.2单例64
3.2.1在C+++中实现单例64
3.2.2使单例线程安全66
3.2.3单例与依赖注入68
3.2.4单例与单一状态69
3.2.5单例与会话状态71
3.3工厂模式71
3.3.1抽象基类72
3.3.2工厂示例73
3.3.3扩展工厂示例74
3.4 API包装器模式76
3.4.1代理模式76
3.4.2适配器模式79
3.4.3外观模式81
3.5观察者模式83
3.5.1 MVC架构83
3.5.2实现观察者模式84
3.5.3推与拉观察者87
第4章 设计88
4.1良好设计的例子89
4.1.1积累技术债89
4.1.2偿还技术债90
4.1.3为长期而设计91
4.2收集功能性需求92
4.2.1什么是功能性需求93
4.2.2功能性需求举例94
4.2.3维护需求94
4.3创建用例95
4.3.1开发用例95
4.3.2用例模板95
4.3.3编写高质量用例96
4.3.4需求与敏捷开发98
4.4 API设计的元素100
4.5架构设计102
4.5.1架构的开发103
4.5.2架构的约束104
4.5.3识别主要抽象105
4.5.4创造关键对象106
4.5.5架构模式109
4.5.6架构的交流110
4.6类的设计111
4.6.1面向对象概念112
4.6.2类设计选项113
4.6.3使用继承113
4.6.4 Liskov替换原则115
4.6.5开放-封闭原则118
4.6.6迪米特法则119
4.6.7类的命名120
4.7函数设计121
4.7.1函数设计选项121
4.7.2函数命名122
4.7.3函数参数123
4.7.4错误处理125
第5章 风格129
5.1纯C API129
5.1.1 ANSI C特性130
5.1.2 ANSI C API的优点132
5.1.3使用ANSI C编写API132
5.1.4从C+++中调用C函数134
5.1.5案例研究:FMOD C API135
5.2面向对象的C+++ API136
5.2.1面向对象API的优点136
5.2.2面向对象API的缺点136
5.2.3案例研究:FMODC+++ API137
5.3基于模板的API138
5.3.1基于模板的API示例138
5.3.2模板与宏139
5.3.3基于模板的API的优点140
5.3.4基于模板的API的缺点141
5.4数据驱动型API141
5.4.1数据驱动型Web服务142
5.4.2数据驱动型API的优点143
5.4.3数据驱动API的缺点144
5.4.4支持可变参数列表144
5.4.5案例研究:FMOD数据驱动型API147
第6章C+++用法149
6.1命名空间149
6.2构造函数和赋值150
6.2.1控制编译器生成的函数152
6.2.2定义构造函数和赋值操作符153
6.2.3 explicit关键字154
6.3 const正确性155
6.3.1方法的const正确性155
6.3.2参数的const正确性157
6.3.3返回值的const正确性157
6.4模板158
6.4.1模板术语158
6.4.2隐式实例化API设计160
6.4.3显式实例化API设计162
6.5操作符重载164
6.5.1可重载的操作符164
6.5.2自由操作符与成员操作符165
6.5.3为类添加操作符166
6.5.4操作符语法168
6.5.5转换操作符170
6.6函数参数171
6.6.1指针与引用参数171
6.6.2默认参数172
6.7避免使用?define定义常量173
6.8避免使用友元175
6.9导出符号176
6.10编码规范179
第7章 性能181
7.1通过const引用传递输入参数182
7.2最小化?nclude依赖184
7.2.1避免“无所不包型”头文件184
7.2.2前置声明184
7.2.3 冗余的?include警戒语句186
7.3声明常量188
7.4初始化列表190
7.5内存优化192
7.6除非需要,勿用内联196
7.7写时复制198
7.8迭代元素202
7.8.1迭代器202
7.8.2随机访问203
7.8.3数组引用204
7.9性能分析205
7.9.1时效性分析205
7.9.2基于内存的分析207
7.9.3多线程分析208
第8章 版本控制209
8.1版本号209
8.1.1版本号的意义209
8.1.2小众的编号方案210
8.1.3提供API的版本信息211
8.2软件分支策略213
8.2.1分支策略213
8.2.2分支方针213
8.2.3 API和并行分支214
8.2.4文件格式和并行发布产品215
8.3 API的生命周期216
8.4兼容性级别217
8.4.1向后兼容性217
8.4.2功能兼容性218
8.4.3源代码兼容性218
8.4.4二进制兼容性219
8.4.5向前兼容性221
8.5怎样维护向后兼容性222
8.5.1添加功能222
8.5.2修改功能223
8.5.3弃用功能224
8.5.4移除功能226
8.6 API审查226
8.6.1 API审查的目的226
8.6.2 API预发布审查227
8.6.3 API预提交审查228
第9章 文档230
9.1编写文档的理由230
9.1.1定义行为230
9.1.2为接口契约编写文档232
9.1.3告知行为的改变233
9.1.4文档涉及的内容234
9.2文档的类型236
9.2.1自动生成的API文档237
9.2.2概述文档237
9.2.3示例和教程238
9.2.4发布说明238
9.2.5授权信息239
9.3文档可用性241
9.4使用Doxygen242
9.4.1配置文件242
9.4.2注释风格和命令242
9.4.3 API注释243
9.4.4文件注释245
9.4.5类注释245
9.4.6方法注释246
9.4.7枚举注释247
9.4.8带有文档的示例头文件247
第10章 测试250
10.1编写测试的理由250
10.2 API测试的类型252
10.2.1单元测试253
10.2.2集成测试255
10.2.3性能测试257
10.3编写良好的测试259
10.3.1良好测试的特征259
10.3.2 测试对象260
10.3.3关注测试工作量261
10.3.4与QA一起工作261
10.4编写可测试的代码262
10.4.1测试驱动开发262
10.4.2桩对象和模拟对象264
10.4.3测试私有代码267
10.4.4使用断言269
10.4.5契约编程270
10.4.6记录并重放功能272
10.4.7支持国际化273
10.5自动化测试工具273
10.5.1自动化测试框架274
10.5.2代码覆盖率277
10.5.3缺陷跟踪系统279
10.5.4持续构建系统280
第11章 脚本化282
11.1添加脚本绑定282
11.1.1扩充或嵌入282
11.1.2脚本化的优点283
11.1.3语言兼容性问题284
11.1.4跨越语言障碍285
11.2脚本绑定技术286
11.2.1 Boost Python286
11.2.2 SWIG286
11.2.3 Python-SIP287
11.2.4 COM自动化287
11.2.5 CORBA288
11.3使用Boost Python添加Python绑定289
11.3.1构建Boost Python290
11.3.2使用Boost Python包装C+++API290
11.3.3构造函数292
11.3.4扩充Python API293
11.3.5 C+++中的继承295
11.3.6跨语言多态296
11.3.7支持迭代器298
11.3.8综合应用298
11.4使用SWIG添加Ruby绑定300
11.4.1使用SWIG包装C+++ API301
11.4.2调整Ruby API303
11.4.3构造函数304
11.4.4扩充Ruby API304
11.4.5 C+++中的继承305
11.4.6跨语言多态307
11.4.7综合应用307
第12章 可扩展性310
12.1通过插件扩展310
12.1.1插件模型概览311
12.1.2插件系统设计问题313
12.1.3以C+++实现插件314
12.1.4插件API315
12.1.5插件示例317
12.1.6插件管理器318
12.1.7插件版本控制321
12.2通过继承扩展322
12.2.1添加功能322
12.2.2修改功能323
12.2.3继承与STL324
12.2.4继承与枚举325
12.2.5访问者模式326
12.2.6禁止子类化331
12.3通过模板扩展332
12.3.1基于策略的模板332
12.3.2奇特的递归模板模式334
附录A库336
参考文献351
索引355