第1部分。简介...
第8部分。命名第9部分。注释...

编写代码时,我们都使用代码设计规则。 有时会发明自己的规则,而在其他情况下,会使用现成的样式指南。 尽管所有C ++程序员用英语阅读都比用其母语阅读更容易,但是用后者编写一本手册会更令人愉快。
本文是将C ++中的Google样式指南的一部分翻译成俄语的。
原始文章 (github上的fork),
更新了翻译 。
这是该指南的介绍性部分,解决了“为什么?”的一般问题。
另外,翻译后,将对可能出现的问题给出几个答案。
参赛作品
C ++是开源Google项目中使用的主要编程语言之一,众所周知C ++是一种非常强大的语言。 但是,它是一种复杂的语言,如果使用不当,可能会成为错误的温床,从而使其难以阅读和维护代码。
本指南的目的是通过详细描述编写C ++代码的价值(或不值得)来管理代码的复杂性。本指南的规则将简化代码管理并提高编码器的性能。
样式 -遵循C ++代码的约定,样式不仅仅是使用代码格式化文件。
由Google开发的大多数开源项目都遵循本指南。
注意:本指南不是C ++教程:假定您熟悉该语言。
风格指南的目标
为什么需要此文件?
本文档有几个主要目标,即内部
Why (基础),个别规则。 使用这些目标,您可以避免长时间的讨论:为什么要遵守规则以及为什么要遵守规则。 如果您了解每条规则的目标,则可以更轻松地同意或拒绝它们,从而在自己更改规则时评估替代方案。
管理目标如下:
- 规则必须值得改变。
- 使用单一样式的好处应胜过工程师对记住和使用规则的不满。
- 与不使用规则的代码库相比,该优点得到了评估,因此,如果您的员工仍然不使用这些规则,那么好处将很小。
- 该原则解释了为什么缺少某些规则的原因:例如goto违反了许多原则,但实际上并未使用,因此本指南并未对其进行描述。
- 针对阅读而不是写作进行了优化
- 我们的代码库(以及其中的大多数单个组件)将长期使用。 因此,与编写相比,阅读此代码将花费更多时间。
- 我们显然关心我们的工程师在读取,维护,调试代码方面是否乐高。 “留下调试/记录代码”是后果之一:当一段代码“怪异”地工作时(例如,在转移指针的所有权时),文本提示的存在可能会非常有用( std :: unique_ptr清楚地显示了所有权的转移)。
- 编写与现有代码相似的代码
在代码库上使用单一样式可以使您切换到其他更重要的问题。
另外,单一样式可促进自动化。 而且,当然,如果代码自动格式化(或#include的对齐)符合实用程序的要求,则可以正常工作。 在其他情况下,仅从一组规则中使用一个(最合适的),并且使用规则的灵活性使人们可以减少争论。 - 编写类似于C ++社区中使用的代码(如果可能)
我们的代码与其他组织和社区的C ++代码的一致性非常有用。 如果标准C ++的功能或该语言的惯用法使编写程序变得容易,那么这是使用它们的机会。 但是,有时标准和习惯用法不太适合该任务。 在这些情况下(如下所述),限制或禁止使用某些标准功能是有意义的。 在某些情况下,将创建您的解决方案,但有时会使用外部库(而不是标准的C ++库),并且将其重写为您自己的标准过于昂贵。 - 避免意外或危险的结构。
C ++具有不明显甚至危险的方法。 一些编码样式限制了它们的使用,因为 使用它们会对代码的正确性带来极大的风险。 - 避免普通C ++程序员认为过于复杂的构造
在C ++中,由于代码的复杂性,有些功能通常不受欢迎。
但是,在经常使用的代码中,由于重复使用,使用棘手的结构更加合理,并且代码的新部分也将变得更加清晰。
如有疑问,请咨询项目负责人。
这对于我们的代码库非常重要,因为 代码所有者和支持团队会随着时间而变化:即使现在每个人都了解代码,几年后情况也会发生变化。 - 考虑代码的规模
凭借超过1亿行的代码库和数千名工程师,错误和简化的成本可能很高。 例如,重要的是避免乱扔全局名称空间:如果在全局名称空间中声明了所有内容,则在大型代码库中很难避免名称冲突。 - 根据需要进行优化
性能优化有时比遵循编码规则更重要。
本文档旨在提供具有合理限制的最易理解的指导。 与往常一样,没有人取消常识。 通过此规范,我们希望为整个C ++中的Google社区建立约定,而不仅仅是针对单个团队或个人。 对狡猾或不寻常的设计表示怀疑:缺乏局限性不一定总能解决。 如果您不能自己决定,请问老板。
C ++版本
现在代码应符合C ++ 17,即 C ++ 2x功能是不可取的。 将来,该手册将针对新版本的C ++进行调整。
不要使用
自定义扩展名 。
如果您打算在项目中使用C ++ 14和C ++ 17,请考虑与其他环境的兼容性。
注意:链接可能会导致手册中尚未翻译的部分。
一些答案/评论:
-为什么要转帐?
就个人而言,我对俄罗斯领导层比较满意。 最好用俄语文本讨论样式指南中的更改。
-为什么选择Google? 是否有更多(或更少)受欢迎的...?
该公司非常有名,领导力不是很大(您可以毫不费力地翻译它),可以满足所需的功能-本指南的风格
-但是Google手册声明使用过时(...),拒绝使用此类有用(...)! 怎么了
据我了解,该文档是一份建议。 您将使用某些内容,更改某些内容-这是允许的。 领导是一个良好的基础。