我问的是关于在Linux上开发的C ++项目。考虑一下:
我有两个对等目录,dir1
和dir2
。 dir1
包含classA.h
和classB.h
。 dir2
包含classC.h
和classD.h
。 dir1/classA.h
#include
dir2/classC.h
dir2/classD.h
。 #include
dir1/classB.h
dir1
dir2
。因此,目录{{1}}和{{1}}之间存在周期性依赖关系。但是,任何类之间都没有周期性的依赖关系。
我理解为什么循环依赖关系在类之间是不好的。对我来说似乎很直观,目录也不应该有周期性依赖 - 但是我无法弄清楚为什么这会很糟糕。
有人有解释吗?
答案 0 :(得分:5)
他们并不坏。至少不是你说出问题的方式。目录是用来组织文件的,但编程上没有意义。
但是如果您的目录代表单独的模块(即每个目录都有一个生成的库文件),您将遇到链接错误。
因为classA
依赖于classC
,所以需要构建第二个模块以编译第一个模块。但是第二个模块需要首先构建第一个模块,因为classD
取决于classB
。
答案 1 :(得分:0)
与类类似,目录的循环依赖性可能是可维护性和重用的问题。
可维护性:当“模块”(在本例中为目录)依赖于另一个模块时,只要其他模块发生更改,更改就会影响该模块。
重用:重用模块时,您还必须重复使用它所依赖的模块。
因此,对于循环依赖,所有模块都会受到影响。这对于数量有限的模块来说并不是一个真正的问题,但它随着数量的增长而增长。