C++编程规范:101条规则、准则与最佳实践(图灵程序设计丛书)
内容提要 :
良好的编程规范可以改善软件质量,缩短上市时间,提升团队效率,简化维护工作。在本书中,两位全世界最受尊敬的 C++ 专家将全球 C++ 社区的集体智慧和经验凝结成一整套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位 C++ 程序员应该遵循的行事准则。本书实际上涵盖了 C++ 程序设计的各个方面,包括:设计和编码风格、函数、操作符、类的设计、继承、构造与析构、赋值、名字空间、模块、模板、泛型、异常、 STL 容器和算法等等。书中对每一条规范都给出了言简意赅的叙述,并辅以实例说明;书中还给出了从类型定义到错误处理等方面的大量 C++ 最佳实践,包括许多最新总结和标准化的技术,即使使用 C++ 多年的程序员也会从中受益匪浅。 本书适合于各层次 C++ 程序员,也可作为高等院校 C++ 课程的教学参考书。
编辑推荐 :
今年是C++ 20周年,本书的出版可以说是恰逢其时。本书是近年来最重要的C++图书,凝聚了C++界 20年的集体智慧。荣获今年Jolt生产效率大奖从某种意义上也证明了这一点。请注意它绝不是国内曾经出版的那些“规定代码应该缩进几格” 之类的编码规范书所能相提并论。
它首先是一本所有C++程序员都需要阅读的最佳实践指南,不仅涵盖编程,也涉及类的设计与优化等主题。书中提到的许多应该避免的问题,即使是许多C++老手也会犯。有些反映的是业界最新的经验总结,蕴涵着C++新的改进方向(毕竟,本书的作者之一是C++标准委员会的主席)。有些技术细节非常深入。同时,如果在学习C++的同时,有本书在手,就能很好地避免形成一些常见的误解,重走前人的老路。对相关各知识点的掌握也能更加深入。 其次,它也是开发小组制定自己所用编程规范的很好的起点。由于作者和技术审校团队的权威背景,本书的各种规则几乎都是无可置疑的。以此为参考,能够将各开发小组的规范水平提高一个档次。 最后,本书也是阅读众多C++经典文献的绝佳入口。因为内容是按知识点和条目形式组织的,每个条目最后又有相关的参考文献及其章节编号,查阅非常方便。 作者简介 :
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:算法 类型安全 参考文献 摘要汇总 索引 前言:
尽早进入正轨:以同样的方式实施同样的过程。不断积累惯用法。
将其标准化。如此,你与莎士比亚之间的惟一区别将只是掌握惯
用法的多少——而非词汇的多少。
——Alan Perlis
标准最大的优点在于,它提供了如此多样的选择。
——出处尚无定论
我们之所以编写本书,作为各开发团队编程规范的基础,有下面两个主要原因:
·编程规范应该反映业界最久经考验的经验:它应该包含凝聚了经验和对语言的深刻理解的公认的惯用法。具体而言,编程规范应该牢固地建立在大量丰富的软件开发文献的基础之上,把散布在各种来源的规则、准则和最佳实践汇集在一起。
·不可能存在真空状态:通常,如果你不能有意识地制定合理..
|