C++ Core Guidelines Introduction

In.目标:目标读者

所有C++程序员,包括所有考虑过C的程序员。

In.目的:目的

这篇文档的目的是帮助大家理解现代C++(当前的C++17)以及在众多编程平台达到一个更统一的形式。

我们不能下结论这些规则可以有效的适用所有编程平台。但是,我们相信一个工程使用这个规则更不容易出错,会更快、更简洁,比传统的更好。在了解时要记住以下几点:

In0:.不要恐慌

在你的项目中理解这篇指导文件。

设计这份指导文件参考了"subset of superset"准则(Stroustrup05)。他们不仅仅是定义了C++的一个更可靠安全的子集,也介绍了一些简单的导致C++出现冗余错误的“扩展”(library components),在我们这套规则中我们可以禁止这些“扩展”。

这个规则强调了固定模式的安全性和来源的安全性。因为这个原因,他们强调了在一定范围内检查的可能性,为了避免解除空指针,避免悬挂指针,系统性的使用exceptions (利用RALL)。一方面是为了达到这个目的另一方面还可以减少代码来源的错误,这个规则强调简洁以及把必要的复杂模块隐藏在简洁的表面模块后面。

许多规则带有指定性。我们希望规则不要去要求“不要这么做”,而是去提供一个选择。这样做造成的一个后果是:一些规则只能仅仅被heuristics支持,而不是精准的被检查。其他的规则是一般化的明确的原则。其他的规则需要更多的细节才能检查一部分内容。

这份指导文件利用了C++的核心。我们期望达到更大的组成部分,更明确的应用区域,越大的项目需要更多的规则、限制、支持库。例如,hard-real-time项目不能免费使用free store (dynamic memory)以及会被选择的库限制。我们鼓励更多类似的明确的规则作为附录添加到这份指导文件里。建立你自己的小库并使用,而不是减少你已经汇编好的代码。

这个规则希望被大家逐渐的采纳。

这份指导文件一些规则试图用各种各样形式的措施增加安全性,而其他的规则是降低事件发生的可能性,有一些规则是两者都做。这份指导文件致力于防止事件通常会禁止合法的C++。当有两种方式可以表达同一个思想,其中一种可以展示出错误的来源而另一种不可以,我们想实现第二种。

In.没有:没有目标

这个规则不是最小的。其他的规则简单但是不是强制性的。一般规则的含义很难理解。越特殊的规则一般更好理解更强制性。不过要不是一般的规则,特殊事件会很多。我们想让新手像制定这套规则的专家一样可以很熟悉地使用这套规则。一些规则完全是强制性的,还有一些规则是启发性的。

这些规则并不是像一本书一样你可以很系统的从目录快速浏览。主要目标是想让你作为一个工具。就好像一个违法规定的工具,又好像是一个返回一个违反规定的链接库一样的工具。这些规则提供了违反规定的原因、可能发生的结果的例子以及建议的应对措施。

这份指导文件并不是一份C++的教程的替代品。如果你需要一个分享经验的教程,点这个链接。

这份指导文件也不是为了推翻以前的C++变成现代C+。这份指导文件明确的思想是让新代码适应一种明确的流行形式。但是我们能在现代化这一章节可以看到一些可能可行的方法去使代码现代化/复兴/提升。更重要的是,这些规则支持逐渐的接纳:很明显,把一大套代码立马全部转变过来是不可行的。

这份指导文件并不意味着对于任何语言技术的细节都很完美精确。在最终的语言定义的问题上,我们可以看到一般的规则和特性作为例外被列举出,还可以看到ISO C++标准。

这个规则并不是想强制你写一个类似Java的C++的子集。并不意味着定义一个单调的“一个真的C++"语言。我们表现出富有表现力的以及不妥协的态度。

这些规则不能准确的指出一个人或者一个机器如何能不加思索地使用它。强制性的准则试图这么做,但是我们更希望给一个含糊的规则或定义,我们希望用开放式的解释而不是明确定义对错。有时候,只有时间和经历是精确的。程序设计并不是数学。

这些规则并不是完美的。一个规则只有妨碍有用的部分才是不好的规则。同样,一个规则只有没禁止严重的错误才是不好的规则。一个含混的、无法实施的或者让每种解决方案都出问题的规则是非常不好的规则。完全没有任何不好之处的规则是不存在的。我们的规则野心不强:”让大部分程序员做大部分事情时都是好的“。如果你不能依赖这些规则编程,反对它忽略它,但是在它毫无意义之前不要让它被我们遗忘。你可以提一些帮助它提高的建议。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值