classes之间的循环依赖不一定有害.事实上,在某些情况下,它们是可取的.例如,如果你的应用程序处理宠物及其主人,你会希望宠物类有一个方法来获取宠物的主人,而主人类有一个方法来返回宠物列表.当然,这会增加内存管理的难度(在非GC语言中).但是,如果循环性是问题固有的,那么试图消除它可能会导致更多的问题.
另一方面,modules之间的循环依赖是有害的.这通常表明考虑不周的模块 struct ,和/或未能坚持最初的模块化.一般来说,与具有干净的分层模块 struct 的代码库相比,具有不受控制的交叉依赖关系的代码库将更难理解和维护.如果没有像样的模块,就很难预测变化的影响.这使得维护变得更加困难,并导致由于考虑不周的修补而导致"代码衰退".
(此外,像Maven这样的构建工具不会处理具有循环依赖关系的模块(人工制品)