为什么循环引用被认为是有害的? [关闭]

2023-12-01

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


之间的循环依赖关系classes不一定有害。事实上,在某些情况下它们是可取的。例如,如果您的应用程序处理宠物及其主人,您会期望 Pet 类有一个方法来获取宠物的主人,并且 Owner 类有一个返回宠物列表的方法。当然,这会使内存管理变得更加困难(在非 GC 语言中)。但如果循环性是问题所固有的,那么试图摆脱它可能会导致更多问题。

另一方面,循环依赖关系modules是有害的。它通常表明模块结构考虑不周,和/或未能坚持原始模块化。一般来说,具有不受控制的交叉依赖关系的代码库比具有干净的分层模块结构的代码库更难理解和维护。如果没有合适的模块,预测变更的影响可能会困难得多。这使得维护变得更加困难,并导致由于考虑不周的修补而导致“代码衰减”。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么循环引用被认为是有害的? [关闭] 的相关文章

  • 解决找不到程序集的问题 |文件未找到异常 |融合日志

    我正在尝试将我的解决方案包 wsp 部署到 SharePoint 2007 环境 WSP 包含一个功能 该功能加载功能接收器类以在运行时部署计时器作业 在部署此 WSP 时 我不断得到 特征 fb631f6c 2c46 4ab5 b7b3
  • 托管 .NET 代码中的“访问冲突写入位置...”

    我收到以下异常 MqSearch exe 中 0x000007FE21AFE593 mscorlib ni dll 处出现未处理的异常 0xC0000005 写入位置 0x00000006609476FD 时出现访问冲突 代码是完全托管的
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • C# - 方法必须有返回类型

    我在调用 C 中的方法时遇到问题 不断收到消息 方法 计算 必须有返回类型 using System Diagnostics namespace WindowsFormsApplication1 public partial class F
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 抛出并保留堆栈跟踪不符合代码分析所描述的预期

    进行代码分析给了我项目 CA2200 CA2200 重新抛出以保留堆栈详细信息 func 重新抛出捕获的异常并将其显式指定为参数 请改用不带参数的 throw 以保留最初引发异常的堆栈位置 我已经实现了该建议 但无论如何我似乎都得到了相同的
  • 当操作系统显示语言为非英语时获取本地时区标识符

    奇怪的是 TimeZone CurrentTimeZone StandardName根据计算机显示语言返回本地化名称 我想要一个可以提供给的程序化标识符TimeZoneInfo在下面的代码中 TimeZoneInfo timeZoneInf
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 如何有效确保小数值至少有 N 位小数

    我想在进行算术运算之前有效地确保十进制值至少有 N 个位置 在下面的示例中 3 显然我可以格式化 0 000 然后解析 但它的效率相对较低 我正在寻找一种避免与字符串转换的解决方案 我尝试过以下解决方案 decimal d 1 23M d
  • 使一个对象只能被同一程序集中的另一个对象访问?

    每个业务对象都有一个包含 sql 调用的匹配对象 我想限制这些 sql 对象 使其只能由匹配的业务对象使用 如何才能实现这一目标 Update 格雷格提出了关于可测试性的观点 由于 SqlObjects 将包含非常特定于业务流程的 sql
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe

随机推荐

  • c 分段错误 fgets

    int main int argc char argv FILE inFilePtr fopen argv 1 r char rawdata malloc sizeof char 100 float ary malloc sizeof fl
  • 两个移动物体与纬度/经度坐标的交点

    尽管我已经阅读了几篇文章 但到目前为止我还无法真正解决这个问题 希望有人可以在这里提供帮助 事实 已知变量 地球表面上的两个移动物体 均具有当前已知的纬度 经度坐标 两个物体的速度也是已知的 以米 秒为单位 一个物体的方向 角度 是已知的
  • HybridAuth / PHP Facebook SDK 身份验证失败(getUser 返回 0)

    我正在尝试配置 HybridAuth 目前还处于早期阶段 现在我想做的就是连接并确保 HA 将重定向到 Facebook 并提示安装应用程序 然后在用户返回时对用户进行身份验证 我正在手动调用以下位置 http mydomain com a
  • 打字机效果 Pygame

    这个问题确实很难问 但我知道 Stack Overflow 的你们都是最聪明的人 我完全不知道为什么会发生这个问题 我对 Python 和 Pygame 相当熟悉 所以任何关于如何改进代码的建议都会带着提高我的技能的热爱而被接受 我正在创建
  • 如何关闭 UI KeyboardType NumberPad?

    我试图隐藏数字键盘 但我不想实现按钮 当用户点击文本字段外部时 有没有办法关闭数字键盘 这是你读到它并说 这很简单 你只是 的问题之一 然后你就去做 让它变得超级复杂 然后意识到事情不必那么复杂 我想出的答案是使用隐形的 我相信它会帮助其他
  • 如何使用 ggplot2 在 y 轴截距(y 轴)上添加点

    我有一个散点图 其中 y 轴缩放比例在某个点发生变化 以绘制具有某些极值的数据 我试图在 y 轴上添加某种视觉提示 指示缩放在该点发生变化 这是一个情节的例子 library scales library ggplot2 set seed
  • Spring:PropertyPlaceholderConfigurer找不到属性文件

    我在使用 Spring 时遇到一个奇怪的问题PropertyPlaceholderConfigurer 我的一种豆子设计如下
  • C++ 纯虚函数的多重继承问题

    我制作了一个最小的示例来复制我在更复杂的类层次结构中遇到的问题 include
  • Django - 模型 - 递归检索叶节点的父节点

    我有一个用户模型类定义如下 class CustomUser models Model user models OneToOneField User slug models SlugField max length 35 unique Tr
  • 导入错误:没有名为 pynput.keyboard 的模块

    我有问题 找不到任何帮助 想法是我无法导入 pynput 我做了 pip install 它显示的是 gt Traceback most recent call last File sb py line 1 in
  • C++读取带空格的字符串

    我有这样的文件 59 137 New York 137 362 Syracuse 216 131 New Jersey 我想将其读入一个结构 X Y 城市名称 char city 100 int x y f open map txt f g
  • 删除 XWPFHyperlinkRun Apache POI

    我和这位小伙伴有同样的问题 如何通过 poi 删除 XWPFHyperlinkRun 由于 XWPFHyperlinkRun 元素 我无法将 doc 转换为 pdf 我可以删除一个简单运行的段落 如下所示 for XWPFParagraph
  • NumberPicker 在 setValue() 之后显示错误的值

    我试图创建一个可以满足我的需求的 NumberPicker 但我偶然发现了一些东西 但我不明白它是什么 行为很简单 我有三个数字选择器 每个数字选择器的值可以从 15 到 15 之间 当用户按下Ok按钮选择的值 如果有效 将保存在 结构 和
  • 如何计算 unix 中给定日期之前的日期?

    我有两个变量 X 和 Y X 的值将以格式给出的日期mmddyy我想计算日期前那个日期and以格式返回yyyymmdd 让我举一个例子 当X 091509 时 mmddyy格式 Y 应为 20090914 yyyymmdd format d
  • Android popupWindow,无法获取弹出窗口中的元素

    我在抓取我的东西时遇到问题Buttons 和 my 中的其他元素PopupWindow 使用debugger它只是报告为null private void initiatePopupWindow try We need to get the
  • 视图有什么用?

    我只是想大致了解 RDBMS 中视图的用途 也就是说 我知道什么是视图以及如何创建视图 我也知道我过去用它们做什么 但我想确保我彻底了解视图的用途和视图不应该用途 进一步来说 视图有什么用 是否存在某些情况下 当您不应该使用视图时却很想使用
  • 如何在 PHP 中使用准备好的语句从 mysql 更改为 pdo?

    dml insert into bookmark accountId category url hash title created value SESSION accountId POST category POST url md5 PO
  • 接口与抽象类

    我有点熟悉抽象类和接口类之间的区别 但是 你认为下面这句话的意思是什么 接口只能定义常量 而抽象类可以有字段 接口只能定义常量 而抽象类可以有字段 接口中的字段是隐式的public static final 抽象类则不然
  • 我可以将枚举添加到现有的 .NET 结构(例如日期)中吗?

    显然 微软的日期结构中没有月份枚举 我想知道是否可以创建一个枚举并将其附加到 DateTime 结构 扩展方法立即浮现在我的脑海中 但我不知道如何使用它们来实现这一点 Dim july As DateTime Months DateTime
  • 为什么循环引用被认为是有害的? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 为什么一个对象引用另一个引用第一个对象的对象是一个糟糕的设计 之间的循环依赖关