标题：C/C++商用工程之道
图书信息
  书 名: 0bug:C/C++商用工程之道
作　者：肖舸
出版社： 电子工业出版社
出版时间： 2010年01月
ISBN: 9787121098482
开本： 16开
定价: 68.00 元
内容简介
《0 bug:C/C++商用工程之道》共分12个章节，主要针对C/C++语言在商用工程开发中的程序实战进行论述，从商用解决方案的角度来理解C和C++语言的程序设计技巧。具体内容包括商用工程开发思路、C/C++无错化程序设计、设计自己的工程库、Log日志管理系统等。该书可供各大专院校作为教材使用，也可供从事相关工作的人员作为参考用书使用。《0 bug:C/C++商用工程之道》主要针对C/C++语言在商用工程开发中的程序实战进行论述，从需求出发，从商用解决方案的角度来理解C和C++语言的程序设计技巧。商用程序员在实际工作中最为关注的无错化、并行、时间片、内存池、线程池、任务池、工程库和跨平台等相关问题，在《0 bug:C/C++商用工程之道》中都有宝贵的经验总结和理念梳理。《0 bug:C/C++商用工程之道》不是教科书，更多的是在开发技巧、测试调试、工程代码库等方面给出实例与总结。《0 bug:C/C++商用工程之道》也可以说是教科书，作者试图通过实战技巧的训练，帮助读者升华出一种全新的程序设计理念。《0 bug:C/C++商用工程之道》可以帮助你摆脱“Training”式编程开发思维与方法，培养“商用”和“产品”标准的工程开发技能。
《0 bug:C/C++商用工程之道》适合作为C和C++的程序员进行“商用化开发”和“工程化开发”的参考。 
图书目录
第1章 商用工程开发思路
1.1 系统分析初步
1.1.1 需求理解和沟通
1.1.2 “上家”和“下家”
1.1.3 角色“定名
1.1.4 初步的拓扑图
1.1.5 后续的模块级设计
1.1.6 商用设计思维
1.2 商用程序员对开发的理解
1.2.1 资源和成本
1.2.2 盈利导向
1.2.3 客观
1.2.4 平衡
1.2.5 服务
1.3 基本开发思路
1.3.1 边界
1.3.2 “细分”的分析方法
1.3.3 灵活，逆向思维
1.3.4 小内核，大外延，工程库思维
1.3.5 单笔交易失败不算失败
1.4 数据传输各个角色的开发思路
1.4.1 服务器的设计原则
1.4.2 PC客户端的开发思路
1.4.3 嵌入式设备的开发思路
1.4.4 跨平台软件模块的开发思路
第2章 基础知识
2.1 内存的理解
2.1.1 32位操作系统的内存分配
2.1.2 C/C++语言对内存的使用
2.1.3 内存——bug之源
2.2 并行运算
2.2.1 时间片
2.2.2 进程和线程
2.2.3 同步和异步
2.2.4 礼貌地释放时间片资源
2.2.5 跨线程通信
2.2.6 跨进程通信
2.2.7 网络，并行运算的世界
2.3 “锁”的使用
2.3.1 为什么要使用锁
2.3.2 使用锁容易犯什么错误
2.3.3 “行为锁”和“资源锁”
2.3.4 单写多读锁
2.3.5 不可重入锁
2.3.6 用锁的最高境界——不用
2.4 “池”的深刻含义
2.4.1 “池”的由来
2.4.2 “池”的使用
2.5 跨平台、跨语言开发基础
2.5.1 C/C++跨平台开发基础
2.5.2 dll和so
2.5.3 API和NPI
2.5.4 服务无处不在
2.6 debug的重要性
2.6.1 在数据传输领域，你亲眼看到的都不是真的
2.6.2 如何看到——万事从debug开始
2.6.3 debug的原则
2.6.4 如何分析数据
2.7 性能统计的重要性
2.7.1 需要统计哪些信息
2.7.2 基本的统计方法
2.7.3 随机数的产生
2.8 队列无处不在
2.8.1 数据结构在数据传输中的应用分析
2.8.2 需要哪几种队列形式
2.9 不要求全责备
第3章 C/C++无错化程序设计
3.1 “无错化程序设计”简介
3.1.1 无错化程序设计思路
3.1.2 C/C++无错化设计的解决方案
3.1.3 使用后的效果
3.2 计算机程序的真谛
3.2.1 程序就是“搬数”
3.2.2 程序就是“写文章”
3.2.3 程序就是“复制”
3.2.4 笔者看程序设计
3.3 定名
3.3.1 匈牙利命名法
3.3.2 函数命名原则
3.3.3 变量命名原则
3.3.4 其他命名规则
3.3.5 定名的折中
3.4 无错化程序的基本书写原则
3.4.1 写简单易懂的程序
3.4.2 严禁变量转义
3.4.3 严禁一语多义
3.4.4 函数只能有一个出口
3.4.5 变量如不使用，保持初值
3.4.6 常量必须定名
3.4.7 太大数组不要用静态方式
3.4.8 尽量避免使用递归
3.4.9 解决方案一套就够
3.5 基本程序设计原则
3.5.1 函数的设计
3.5.2 类的设计
3.5.3 其他要点
3.6 基本语句的约定
3.6.1 判断语句，常量永远在左边
3.6.2 for（i=0;i3.6.3 while（1）
3.6.4 不要使用do...while（）
3.6.5 i++和++i问题
3.6.6 请不要使用“?（...）:（...）”结构
3.6.7 善用大括号{}缩小作用域
3.7 请使用goto语句
3.7.1 函数只有一个出口的原则需要goto
3.7.2 谁分配、谁释放的原则需要goto
3.7.3 商用工程要求goto
3.7.4 程序的易读性要求goto
3.7.5 break为什么不能乱用
3.7.6 goto的常规使用手法
3.8 指针的使用原则
3.8.1 商用数据传输常见的指针类型
3.8.2 不要使用两个以上的*号
3.8.3 指针不能参与四则运算
3.9 使用结构体的技巧
3.9.1 结构体传参的必要性
3.9.2 预防多重指针的隐患
3.9.3 32位到64位移植
3.9.4 弹性内存使用需要结构体传参
3.9.5 网络传输协议，需要结构体传参
3.10 使用宏的建议
3.10.1 宏的几大作用
3.10.2 C++的建议
3.10.3 编译宏——跨平台开发
3.11 回调函数设计方法
3.11.1 回调模型设计者
3.11.2 回调模型使用者
3.11.3 参数传递的常规手法
3.11.4 事件模型和回调模型
3.12 C语言字符串的深入研究
3.12.1 字符串拷贝
3.12.2 字符串构造
3.12.3 关于字符串处理的结论
3.13 C/C++语言无错化程序设计小结
第4章 设计自己的工程库
4.1 数据传输库中到底需要哪些模块
4.1.1 跨平台定义
4.1.2 锁与安全模块
4.1.3 内存池
4.1.4 资源管理池
4.1.5 线程池与任务池
4.1.6 队列管理
4.1.7 其他工具
4.2 工程库基础——跨平台定义
4.2.1 锁定义
4.2.2 线程控制相关定义
4.2.3 Socket传输相关定义
4.2.4 include系统头文件
第5章 debug工具
5.1 变参函数的设计
5.2 文本输出
5.2.1 获得时间戳
5.2.2 同时输出到文件和屏幕
5.2.3 文本输出的原则
5.3 二进制输出的debug函数
5.4 核心debug和日志系统的区别
5.5 统计模块
5.5.1 累加器
5.5.2 ?计算模块
5.5.3 平均值计算
5.5.4 统计平均值计算
5.5.5 辅助功能函数
5.6 CLowDebug工具类
5.6.1 需求分析
5.6.2 数据边界声明
5.6.3 类声明
5.6.4 类工具函数
5.6.5 业务函数
5.7 基本debug工具小结
第6章 锁
6.1 二元动作理论
6.1.1 二元动作在C语言中的书写特性
6.1.2 面向对象和面向过程的本质差异
6.1.3 二元动作在C++语言中的特殊要求
6.1.4 二元动作开发关注要点
6.2 锁对象
6.3 多线程安全的变量
6.3.1 CMint和CMbool试验
6.3.2 多线程安全的变量模板
6.4 单写多读锁
6.4.1 单写多读锁的来源
6.4.2 单写多读锁C语言实
……
第7章 内存与资源管理
第8章 队列
第10章 Log日志管理系统
第11章 聚合工具类
第12章 细节决定成败（代结束语）
……