“在C++里面有一种更小、更简单、更安全的语言在努力摆脱困境。”
C++核心指南是由Bjarne Stroustrup领导的协作努力,就像C++语言本身一样。它们是许多组织多年讨论和设计的结果。它们的设计鼓励普遍适用性和广泛采用,但可以自由复制和修改以满足组织的需求。
指南本身可在CppCoreGuidelines中找到。该文件采用GH风味的MarkDown。它有意保持简单,主要是ASCII,以允许自动后处理,例如语言翻译和重新格式化。编辑器维护一个格式化以供浏览的版本。请注意,它是手动集成的,可能略早于 master 分支中的版本。
《指南》是一份不断发展的文件,没有严格的“发布”节奏。Bjarne Stroustrup 会定期审阅文档,并在简介中增加版本号。递增版本号的签入在 git 中标记。
许多指南使用仅标题指南支持库。GSL 中提供了一种实现:指南支持库。
该指南的目的是帮助人们有效地使用现代C++。“现代C++”是指C++11及更新。换句话说,鉴于你现在可以开始,你希望你的代码在 5 年后是什么样子?10年后?
这些准则侧重于相对高级别的问题,例如接口、资源管理、内存管理和并发性。此类规则会影响应用程序体系结构和库设计。遵循这些规则将导致代码静态类型安全,没有资源泄漏,并且捕获的编程逻辑错误比当今代码中常见的错误多得多。而且它会运行得很快——你可以负担得起把事情做好。
我们不太关心低级问题,例如命名约定和缩进样式。但是,任何可以帮助程序员的主题都不是越界的。
我们最初的一套规则强调安全(各种形式)和简单性。他们很可能太严格了。我们希望必须引入更多例外,以更好地满足现实世界的需求。我们还需要更多的规则。
你会发现一些规则与你的期望背道而驰,甚至与你的体验背道而驰。如果我们没有建议你以任何方式更改编码风格,我们就失败了!请尝试验证或反驳规则!特别是,我们真的希望用测量或更好的示例来支持我们的一些规则。
你会发现一些规则是显而易见的,甚至是微不足道的。请记住,指南的一个目的是帮助经验不足或来自不同背景或语言的人跟上进度。
这些规则旨在由分析工具支持。违反规则的行为将被标记为相关规则的引用(或链接)。我们不希望你在尝试编写代码之前记住所有规则。
这些规则旨在逐步引入代码库。我们计划为此构建工具,并希望其他人也这样做。
非常欢迎提出改进意见和建议。随着我们理解的提高以及语言和可用库集的改进,我们计划修改和扩展此文档。更多详细信息可在贡献和许可证中找到。
感谢DigitalOcean托管标准C++基金会网站。