Giter VIP home page Giter VIP logo

cppcoreguidelines-zh-cn's Introduction

C++ 核心指导方针

"Within C++ is a smaller, simpler, safer language struggling to get out." -- Bjarne Stroustrup

《C++ 核心指导方针》(The C++ Core Guidelines),与 C++ 语言本身一样,是由 Bjarne Stroustrup 领导的协作项目。 该指导方针是许多组织和团体之间耗费了大量人年的探讨和设计的心血成果。它们的设计着眼于普遍的适用性并鼓励广泛采纳, 但您也可以对其进行随意的复制和修改,以满足您的团体组织自身的需要。

起步

指导方针内容见 CppCoreGuidelines。该文档为 GH 风格 MarkDown 格式。我们有意维持文档简单,(英文原版)基本上是 ASCII,以便于进行诸如语言翻译和格式转换之类的自动化后处理。 编写者们还维护了一个适于浏览的版本。请注意它由人工集成,因而可能略晚于 master 分支的版本。 英文原版

这些指导方针是持续不断演进的文档,并且没有严格的“发布”节奏。Bjarne Stroustrop 定期评审文档并增加导言部分的版本号。增加版本号的签入 都在 git 中打了标签。

其中有不少都用到了纯头文件的 Guidelines Support Library(指导方针支持库)。有一个实现在 GSL:Guidelines Support Library

背景和领域

这个指导方针的目标是帮助人们更有效地运用现代 C++ 语言。所谓“现代”的含义是指 C++11 和更新的版本。 换句话说,如果你从现在开始算起,五年后你的代码看起来是怎么样的?十年呢?

指南所关注的是一些相对比较高层次的问题,比如接口,资源管理,内存管理,以及并发等等。这样的规则会对应用的架构 以及程序库的设计都造成影响。如果遵循这些规则,代码将会是静态类型安全的,没有资源泄露,并且能够捕捉到比当今的代码 通常所能捕捉到的多得多的编程逻辑错误。还能更快速地运行——你不必牺牲程序的正确性。

我们对于如命名约定和缩进风格一类的低层次的问题不那么关注。当然,对程序员有帮助的任何话题都是可接受的。

我们最初的规则集合强调的是(各种形式的)安全性以及简单性,它们有些过于严格了。我们预期将会引入更多的例外情况, 以便使它们更好地适应现实世界的需要。我们也需要更多的规则。

您可能会发现,有的规则与您的预期相反,甚至是与您的经验相违背。其实如果我们没建议您在任何方面改变您的编码风格, 那其实就是我们的失败。请您尝试验证或者证伪这些规则吧!尤其是,我们十分期望让一些规则能够建立在真实的测量数据上, 或者是一些更好的例子之上。

您可能会觉得一些规则很显然,甚至没有什么价值。但请记住,一份指导方针的目的之一就在于帮助那些经验不足的,或来自其他 背景或使用其他语言的人,能够迅速行动起来。

指导方针中的规则有意设计成可以由分析工具提供支持的。违反规则的代码会打上标记,以引用(或者链接)到相关的规则。 您在开始编码前并不需要记住所有这些规则。

这些规则都是为了逐步引入一个代码库而设计的。我们计划建立这样的工具,并希望其他人也能提供它们。

贡献与授权

十分欢迎大家提出意见和改进建议。随着我们的知识增长,随着语言和可用的程序库的改进,我们计划对这份文档不断进行修改和扩充。 更多细节请见 CONTRIBUTINGLICENSE

感谢 DigitalOcean 存放标准 C++ 基金会网站。

cppcoreguidelines-zh-cn's People

Contributors

butyllee avatar elite-stay avatar freezestudio avatar htyeim avatar infancy avatar ksark avatar lichuncen avatar lingr7 avatar lylong94 avatar lynnboy avatar maplefu avatar momochniu avatar ohto-ai avatar pezy avatar poor-circle avatar rheinhauss avatar yingang avatar zhu-weijie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cppcoreguidelines-zh-cn's Issues

I.2: 避免非 `const` 全局变量描述感觉有点抽象

你们描述的是:

const 全局变量能够隐藏依赖关系,并使这些依赖项可能出现无法预测的变动。

感觉说的太抽象了,我能懂只是因为我懂全局变量的问题,而不是我看它看懂的。

《C++ Guidelines 解析》 里面的描述是这样的:

全局变量会在函数中注入隐藏的依赖,而该依赖并不是接口的一部分。

虽然也有点抽象,但是我觉得这个描述要更好的多,因为我认为它后半句 该依赖并不是接口的一部分 描述的比较形象一些,虽然也就那样吧🤣🤣。

github page deployment error

The build step of the GitHub Page deployment has error, pages cannot visit.

The original English version also use GitHub pages. There is a instruction file on the gh-pages branch. The fifth step is 5. Replace all instances of {{ with {{ "{{" }}

I tried enclosure the code block with {% raw %} {% endraw %}. It also works.

By the way, can we copy the template and js script from that branch, and have the option to hide all code blocks?

错别字

Pro.lifetime: 生存期安全性剖面配置
已经不指向任何东西的指针进行访问

似乎是个错别字

P.S. 感谢翻译

翻译统一性

这里 的标题建议改为"...参数化(SCARY)",即保留原文,以和下面的“SCARY技术”统一

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.