是否有类似于PSR-1/2的C++编码规范?

4
我正在寻找C++编码规范。
我发现有很多标准:
- Google C++风格指南 - 高度完整性C++编码标准版本4.0 - ...
是否有像PSR-1/2那样的C++编码标准,每个C++开发人员都遵循?
1)PHP标准推荐。 PSR-1:基本编码标准。 PSR-2:编码风格指南。

“PSR-1/2”标准实际上是什么? - πάντα ῥεῖ
PSR:PHP标准推荐。 PSR-1:基本编码标准。 PSR-2:编码风格指南。 - Mahmudul Haque
1
现在为 CppCoreGuidelines 做广告是不对的吗?我认为它的意图显然是你所寻找的。编辑:这里有样式 - Maikel
2
@Maikel:哇,这说明了很多关于C++的问题,一个“使用它的指南”都太长了。 - Lightness Races in Orbit
@Maikel 谢谢。你可以把它发表为答案吗? - Mahmudul Haque
@mmhyamin:但这并不是一个答案。 - Lightness Races in Orbit
3个回答

2
有没有像 PSR-1/2 那样的 C++ 编码标准是每个 C++ 开发人员都遵循的?
C++ 语言标准由 ISO C++ Committee 官方制定。
该标准带有迭代和版本(如 c++-11、c++-14、c++-17),它们(大多数情况下)向后兼容。
实际上,这就是每个 C++ 开发人员需要遵循的。
如果你实际上是在询问编码风格指南,那就是另外一回事了。并且,除了C++标准语言中禁止或不鼓励的内容之外,没有任何普遍的标准。
重新思考一下“标准样式指南”的措辞,实际上有像Misra C++这样的已经建立的编码风格标准。
你需要考虑满足这些标准才能进入某些商业领域。你可能认为这些标准很愚蠢,过于限制,但客户仍然希望您遵守这些样式指南。
这是你的选择,你需要估计额外的努力和成本(例如投资于确认标准合规性的静态分析工具),并将其计入客户账单。

谢谢。是的,我实际上是指编码风格标准。我认识我所在城市和大学的PHP开发人员。他们每个人都遵循PSR标准。所以,他们的代码看起来都一样。这个标准对他们来说就像圣经一样。我正在寻找那种标准。正如我之前所说,我是C++编程的新手,当我查看其他人的代码时,我首先必须逐行扫描他们定义或声明了什么。每个人的编码风格都不同。每个人都使用自己的风格。这对像我这样的初学者来说非常令人沮丧。 - Mahmudul Haque
@mmhyamin 这可能是因为PHP是一种无类型且非常笨拙的语言,与C++相比,许多事情已经被涵盖在所提到的C++语言标准中。 - πάντα ῥεῖ
@mmhyamin: “我认识来自我的城市和大学的PHP开发人员。他们每个人都遵循PSR标准。” 我觉得这极难相信。你真的调查了每一个人吗? - Lightness Races in Orbit
1
@mmhyamin: “我是C++编程的新手,当我查看别人的代码时,我必须从上到下扫描他们定义或声明了什么。每个人的编码风格都不同。每个人都在使用自己的风格。” 那么这就回答了你的问题,不是吗?显然,并没有一个真正的C++编码风格。否则你就不会有这种经历了。 - Lightness Races in Orbit
@BarryTheHatchet 我所说的“每个人”指的是专业人士。 - Mahmudul Haque

1

编号。

如果有一个所有人都遵循的单一样式指南,为什么会有多个样式指南呢?

就我个人而言,我不遵循任何其他人的样式指南,我认为你也不应该这样做。

你的工作可能要求你遵循某种指南,但这样你就不会问我们应该使用哪个指南了。

请注意,我拒绝称这些样式指南为“标准”。


1
说实话,我不遵循任何其他人的代码风格指南。嗯,正如所提到的,这可能会限制您使用代码进入某些特定的业务领域。 - πάντα ῥεῖ
也许每个开发者都可以有时遵循那个风格指南,比如每个第三个星期三。只是为了看看它的效果如何。 - juanchopanza
一些客户希望您达到一定的Misra C++编码风格指南水平(在汽车行业中很流行),因此您必须遵守,否则您将被排除在项目之外,就是这么简单 :-P - πάντα ῥεῖ
@BarryTheHatchet:“我不为那些客户工作。” 好选择 :-D ... - πάντα ῥεῖ
1
@BarryTheHatchet 对于协作,我认为我们需要一个标准。我正在参加我的大学的竞赛编程研讨会。我们必须在下个月组成一个小组(最多3名成员)。因此,如果我们不遵循任何标准,那么我们如何相互协作呢?理解其他成员的代码将浪费很多时间。 - Mahmudul Haque
显示剩余2条评论

1
尽管我认为已经给出的答案已经很好了,但我想补充以下评论:
有一个相当新的项目C++核心准则试图做你正在寻找的事情(至少我是这么认为的)。它仍在进行中,但在我看来已经值得一看。还有一些关于这些准则的不错的演讲 CppCon 2015:Bjarne Stroustrup “Writing Good C++14”CppCon 2015:Herb Sutter "Writing Good C++14... By Default" 这些演讲很好地解释了它的主要目的。他们非常强调静态代码分析,并且在我看来,他们试图通过这些准则大力推动它。
但是重要信息是:
常见问题解答6:这些准则是否已获得ISO C++标准委员会的批准?它们是否代表委员会的共识?
答:不是的。这些准则属于标准之外,旨在为标准服务,并作为如何有效使用当前标准C++的现行准则进行维护。我们的目标是将它们与委员会演进的标准保持同步。
最终意义上,这只是另一套规则,就像其他答案所述。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接