为什么一个对象引用另一个对象而引用第一个对象是一个糟糕的设计?

推荐答案

classes之间的循环依赖不一定有害.事实上,在某些情况下,它们是可取的.例如,如果你的应用程序处理宠物及其主人,你会希望宠物类有一个方法来获取宠物的主人,而主人类有一个方法来返回宠物列表.当然,这会增加内存管理的难度(在非GC语言中).但是,如果循环性是问题固有的,那么试图消除它可能会导致更多的问题.

另一方面,modules之间的循环依赖是有害的.这通常表明考虑不周的模块 struct ,和/或未能坚持最初的模块化.一般来说,与具有干净的分层模块 struct 的代码库相比,具有不受控制的交叉依赖关系的代码库将更难理解和维护.如果没有像样的模块,就很难预测变化的影响.这使得维护变得更加困难,并导致由于考虑不周的修补而导致"代码衰退".

(此外,像Maven这样的构建工具不会处理具有循环依赖关系的模块(人工制品)

.net相关问答推荐

AutoMapper在实体框架查询后不知从哪里带来数据

为什么解码后的字节数组与原始字节数组不同?

如何在 Raspberry Pi 上托管 WASM 文件?

MassTransit RespondAsync 无法返回空值

如何在选项卡中 Select Winforms NumericUpDown 中的所有文本?

查找所有源硬编码字符串

SetupSet() 已过时.代替什么?

为什么循环引用被认为是有害的?

我可以从 .NET/C# 获取其他进程的命令行参数吗?

C# 中 try/finally 的开销?

有什么方法可以在不重新编译的情况下覆盖 .NET Windows 服务名称?

DBNull 的意义何在?

如何对无法加载的 VSTO 插件进行故障排除?

SQLParameter 如何防止 SQL 注入?

什么是 ToString("N0") 格式?

在 C#/.NET 中组合路径和文件名的最佳方法是什么?

在 C# 中,为什么不能将 List 对象存储在 List 变量中

找不到库 hostpolicy.dll

WPF 中的 Application.DoEvents() 在哪里?

如何为我的 C# 应用程序创建产品密钥?