为什么Google样式指南要求系统标题出现在项目标题之前?

时间:2017-04-15 00:11:58

标签: c++ google-style-guide

在C ++ Google样式指南的标题部分,第一行说:

  

使用标准顺序以提高可读性并避免隐藏的依赖关系:   相关的标题,C库,C ++库,其他库'.h,你的   项目的.h。

但这对我来说是倒退的,因为项目的标题可能依赖于系统标题,而系统标题显然不太可能依赖于项目标题。简化指南中给出的示例,我们得到body的{​​{1}}行,这些行依赖于:not(.test),标准标题#include和项目代码库中的另一个文件, X.cpp

X.h

如果<vector>依赖于A.h,则样式的顺序会隐藏问题。如果标题包含在与最不相关的最相关的顺序中,那么问题就会暴露出来。

我错过了什么?也许相反的论点是,#include "X.h" #include <vector> #include "other/module/A.h" 被编译时会暴露出这个问题,但如果没有A.h开始,那么这个论点就不会出现(即<vector>只是标题)。

1 个答案:

答案 0 :(得分:1)

似乎已经过去了很多年了。

我注意到我实际上使用的是Google Style Guide所指示的标头包含顺序,而没有太多的理由,因为与其他部分不同,“名称和包含顺序”部分中没有给出任何内容。因此,从他们的goals中,我只能猜测这样做是为了保持一致性,并按照他们所说的进行一些自动化操作,以及“只需选择一个[规则]并不再为此担心”,这样人们就可以不再争论规则了。

太糟糕了,因为看起来Nathan's answerthis question中给出的顺序和推理在今天变得更加有意义。就个人而言,我会逐渐切换到包含样式。

希望,将来在C ++代码中管理依赖项方面的改进将使这种情况更好。理想情况下,根本不必担心您声明依赖关系的顺序,并且有更好的时间来检测和删除过时的包含,使用,导入等。