获2005年JOLT生产效率大奖!重要提示:《C++编程规范(英文影印版) 》全面上市,大家对照英文版检查中文版翻译质量,欢迎您挑错并指正,挑错有奖! China-Pub将从中挑选出10~20名读者赠予样书.知识有价! 本书作者,两位全世界最受尊敬的 C++ 专家将全球 C++ 社区的集体智慧和经验凝结成一整套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位 C++ 程序员应该遵循的行事准则。 今年是C++ 20周年,本书的出版可以说是恰逢其时。本书是近年来最重要的C++图书,凝聚了C++界 20年的集体智慧。荣获今年Jolt生产效率大奖从某种意义上也证明了这一点。请注意它绝不是国内曾经出版的那些“规定代码应该缩进几格” 之类的编码规范书所能相提并论。 它首先是一本所有C++程序员都需要阅读的最佳实践指南,不仅涵盖编程,也涉及类的设计与优化等主题。书中提到的许多应该避免的问题,即使是许多C++老手也会犯。有些反映的是业界最新的经验总结,蕴涵着C++新的改进方向(毕竟,本书的作者之一是C++标准委员会的主席)。有些技术细节非常深入。同时,如果在学习C++的同时,有本书在手,就能很好地避免形成一些常见的误解,重走前人的老路。对相关各知识点的掌握也能更加深入。 其次,它也是开发小组制定自己所用编程规范的很好的起点。由于作者和技术审校团队的权威背景,本书的各种规则几乎都是无可置疑的。以此为参考,能够将各开发小组的规范水平提高一个档次。 最后,本书也是阅读众多C++经典文献的绝佳入口。因为内容是按知识点和条目形式组织的,每个条目最后又有相关的参考文献及其章节编号,查阅非常方便。 通过阅读本书,可以找到以下问题的答案: 哪些东西值得标准化?哪些东西不值得标准化?使代码可扩展的最佳方法是什么?合理的错误处理策略有哪些要素?如何(和为什么要)避免不必要的初始化、循环依赖和定义依赖?何时应该(以及如何)同时使用静态和动态的多态性?如何实践“安全的”改写(override)?何时该提供不会失败的交换(swap)?为什么要阻止异常跨越模块边界传播?如何阻止?为什么不应该在头文件中写名字空间声明或指令?为什么应该使用STL vector和string代替数组?如何选择正确的STL搜索算法?为了保证代码的类型安全,应该遵从哪些规则? |
Herb Sutter 是 ISO C++ 标准委员会主席,《C++ Users Journal》杂志特邀编辑和专栏作家。他目前在微软公司领导 .NET 环境下 C++ 语言扩展的设计工作。除本书外,他还撰写了三本广受赞誉的图书:《Exceptional C++ Style》 (中文版即将由人民邮电出版社出版) 、《Exceptional C++》和《More Exceptional C++》。Andrei Alexandrescu 是世界顶尖的 C++ 专家,《C++ Users Journal》杂志的专栏作家,他的《Modern C++ Design》一书曾荣获 2001 年最佳 C++ 图书称号。书中所开发的 Loki 已经成为最负盛名的 C++ 程序库之一。 |
组织及策略上的问题(Organizational and Policy Issues) 0. 不拘小节(或:了解什么不需要被规范化) 1. 在高警告级别下干净地编译 2. 使用自动化的构建(build)系统 3. 使用版本控制系统(version control system) 4. 在代码复查上投资 设计风格(Design Style) 5. 给每一个实体分配一份内聚的职责 6. 以正确,简单,清晰为上 7. 编程中应知道何时和如何考虑可伸缩性 8. 不要进行不成熟的优化 9. 不要进行不成熟的劣化 10. 尽量减少全局和共享数据 11. 隐藏信息 12. 了解何时及如何为并发性编写代码 13. 确保资源为对象所占有。使用显式的RAII和智能指针 编程风格(Coding Style) 14. 宁可在编译和链接时出错也不要在运行时出错 15. 积极使用const 16. 避免使用宏 17. 避免使用魔数(magic numbers) 18. 尽可能局部地声明变量 19. 总是初始化变量 20. 避免太长的函数。避免太深的嵌套 21. 避免跨编译单元的初始化依赖 22. 尽量减少定义性依赖。避免循环依赖 23. 头文件应该自给自足 24. 总是编写内部#include防护符。决不要用外部#include防护符 函数与操作符(Functions and Operators) 25. 正确地选择通过值、(智能)指针或者引用传递参数 26. 保持重载操作符的自然语义 27. 优行使用算术操作符和赋值操作符的标准形式 28. 优先使用++和--的标准形式。优先调用前缀形式 29. 考虑重载以避免隐含类型转换 30. 避免重载&&, ||, 或, (逗号) 31. 不要编写依赖于函数参数求值顺序的代码 类设计及继承 构造,析构,及复制操作 名字空间与模块 模板与泛型 错误处理与异常 STL:容器 STL:算法 类型安全 参考文献 摘要汇总 索引 |
商品评论(0条)