这是由 Bjarne Stroustrup 和 Herb Sutter 撰写,包括一组关于 C++ 编码的久经考验的指南、规则和最佳实践。
本文件是一套良好使用C++的指南。本文档的目的是帮助人们有效地使用现代C++。我们所说的 "现代C++"是指有效地使用ISO C++标准(目前是C++17,但我们几乎所有的建议也适用于C++14和C++11)。换句话说,鉴于你现在就可以开始,你希望你的代码在5年后是什么样子的?10年后呢?
这些准则集中在相对高层次的问题上,如接口、资源管理、内存管理和并发性。这样的规则会影响到应用架构和库的设计。遵循这些规则将导致代码是静态类型安全的,没有资源泄漏,并且比现在的代码中常见的编程逻辑错误多得多。而且,它的运行速度会很快--你可以负担得起做正确的事情。
我们不太关心低级别的问题,例如命名规则和缩进风格。然而,任何能够帮助程序员的话题都是不可能的。
我们最初的一套规则强调安全(各种形式的)和简单性。它们很可能太严格了。我们希望能引入更多的例外情况,以更好地适应现实世界的需要。我们还需要更多的规则。
你会发现有些规则与你的期望相反,甚至与你的经验相反。如果我们没有建议你以任何方式改变你的编码风格,我们就失败了 请尝试验证或反驳规则! 特别是,我们真的希望能有一些规则得到测量或更好的例子的支持。
你会发现有些规则很明显,甚至是微不足道的。请记住,准则的一个目的是帮助那些经验不足或来自不同背景或语言的人尽快掌握。
许多规则都是为了得到分析工具的支持。违反规则的行为将被标记为相关规则的参考(或链接)。我们并不期望你在尝试写代码之前记住所有的规则。对这些指南的一种思考方式是将其作为一种工具的规范,而这种规范恰好是人类可以阅读的。
目录:
- 简介
- 哲学
- 接口
- 功能
- 类和类层次结构
- 枚举:枚举
- 资源管理
- 表达式和语句
- 性能
- CP: Concurrency and parallelism
- E:错误处理
- 常量和不变性
- T:模板和泛型编程
- CPL:C 风格的编程
- SF:源文件
- SL:标准库
代码开源项目