"Within C++ is a smaller, simpler, safer language struggling to get out." -- Bjarne Stroustrup
《C++ 核心指南》(The C++ Core Guidelines),与 C++ 语言本身一样,是由 Bjarne Stroustrup 领导的协作项目。 该指南是许多组织和团体之间耗费了大量人年的探讨和设计的心血成果。它们的设计着眼于普遍的适用性并鼓励广泛采纳, 但您也可以对其进行随意的复制和修改,以满足您的团体组织自身的需要。
这个指南的目标是帮助人们更有效地利用现代 C++ 语言。所谓“现代”的含义是指 C++11 和 C++14(以及即将到来的 C++17)。 换句话说,如果你从现在开始算起,五年后你的代码看起来是怎么样的?十年呢?
指南所关注的是一些相对比较高层次的问题,比如接口,资源管理,内存管理,以及并发等等。这样的规则会对应用的架构 以及程序库的设计都造成影响。如果遵循这些规则,代码将会是静态类型安全的,没有资源泄露,并且能够捕捉到比当今的代码 通常所能捕捉到的多得多的编程逻辑错误。还能更快速地运行——你不必牺牲程序的正确性。
我们对于如命名约定和缩进风格一类的低层次的问题不那么关注。当然,对程序员有帮助的任何话题都是可接受的。
我们最初的规则集合强调的是(各种形式的)安全性以及简单性,它们有些过于严格了。我们预期将会引入更多的例外情况, 以便使它们更好地适应现实世界的需要。我们也需要更多的规则。
您可能会发现,有的规则与您的预期相反,甚至是与您的经验相违背。其实如果我们没建议您在任何方面改变您的编码风格, 那其实就是我们的失败。请您尝试验证或者证伪这些规则吧!尤其是,我们十分期望让一些规则能够建立在真实的测量数据上, 或者是一些更好的例子之上。
您可能会觉得一些规则很显然,甚至没有什么价值。但请记住,一份指南的目的之一就在于帮助那些经验不足的,或来自其他 背景或使用其他语言的人,能够迅速行动起来。
指南中的规则有意设计成可以由分析工具提供支持的。违反规则的代码会打上标记,以引用(或者链接)到相关的规则。 您在开始编码前并不需要记住所有这些规则。
这些规则都是为了逐步引入一个代码库而设计的。我们计划建立这样的工具,并希望其他人也能提供它们。
十分欢迎大家提出意见和改进建议。随着我们的知识增长,随着语言和可用的程序库的改进,我们计划对这份文档不断进行修改和扩充。