在C++中,为什么循环目录依赖项不好

In C++, why are cyclical directory dependencies bad?

本文关键字:依赖 循环 C++ 为什么      更新时间:2023-10-16

我问的是关于在Linux上开发的C++项目。 考虑一下:

我有两个对等目录,dir1dir2. dir1包含classA.hclassB.hdir2包含classC.hclassD.hdir1/classA.h有一个dir2/classC.h #includedir2/classD.hdir1/classB.h有一个#include。 因此,目录dir1dir2之间存在循环依赖关系。但是,任何类之间都没有循环依赖关系。

我理解为什么类之间的循环依赖是不好的。 对我来说,目录也不应该有循环依赖关系,这似乎很直观——但是我不知道为什么这会很糟糕。

有人有解释吗?

它们还不错。至少不是你陈述问题的方式。目录用于组织文件,但以编程方式没有任何意义。

但是,如果您的目录表示单独的模块(即每个目录都有一个生成的库文件(,则会出现链接错误。

因为classA依赖于classC,所以你需要构建第二个模块来编译第一个模块。但是第二个模块需要首先构建第一个模块,因为classD取决于classB

就像类一样,目录的循环依赖可能是可维护性和重用的问题。

可维护性:当一个"模块"(在本例中为目录(依赖于另一个模块时,每当其他模块更改时,更改都会影响该模块。
用:重用模块时,还必须重用它所依赖的模块。

因此,对于循环依赖关系,所有模块都会受到影响。 对于数量有限的模块来说,这不是一个真正的问题,但它会随着数量的增加而增长。