问题标签 [circular-dependency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
200 浏览

database - 在表之间的一对多关系中指定主要关系的约定是什么?

我了解如何设计一个在其表之间具有简单的一对多关系的数据库模式。我想知道将该集合中的一个特定关系指定为主要关系的约定或最佳实践是什么。例如,一个人有许多信用卡。我知道如何建模。我如何将其中一张卡指定为该人的主要卡?我提出的解决方案充其量似乎并不优雅。


我会尽量澄清我的实际情况。(不幸的是,实际的域只会混淆事物。)我有 2 个表,每个表都有很多列,比如说 Person 和 Task。我也有只有几个属性的项目。一个人有许多项目,但有一个主要项目。一个项目有许多任务,但有时有一个主要任务和备用任务,有时没有主要任务,而是一系列任务。没有不属于项目的任务,但并非严格禁止。

我似乎无法想出一种方法来同时对主要项目、主要任务和任务序列进行建模,而不会引入过于复杂或纯粹的邪恶。

这是迄今为止我想出的最好的:

对于一个简单的概念来说,它似乎太多了。


这是我发现的一个问题,它处理非常相似的情况:Database Design: Circular dependency

不幸的是,对于如何处理这种情况似乎没有达成共识,“正确”的答案是禁用数据库一致性检查机制。不酷。

0 投票
3 回答
1454 浏览

c++ - 两个类和内联函数

我有两个类,它们都使用其他类,例如:

当我像上面的例子一样定义它时,它可以工作(我也有一些#ifndef可以避免无限的标题重复)。但我也想在我的类中添加一些内联函数。我在这里读到我应该将内联函数的定义放在头文件中,因为如果我将它们放在 cpp 文件中并想从其他 cpp 文件中调用它们,它将不起作用(当我这样做时,我在链接)。但这里的问题是这样的:

我收到错误:无效使用不完整类型“struct Class2”。

那么我该怎么做呢?

0 投票
1 回答
506 浏览

iphone - iPhone:MKAnnotation 中的循环导入警告​​:找不到方法

我刚刚通过使用类转发解决了循环依赖问题。现在,我收到未找到“showSumDetails”方法的警告。我不明白为什么会发生这种情况,任何帮助将不胜感激。在这里包括一些代码:

MyAnnotation.h

MyMapViewController.h

MyMapViewController.m - 方法实际存在的地方,它也在头文件中定义。

但是MyAnnotation.m中的以下方法找不到上面的方法:-(

我很乐意提供更多信息。请帮忙!!!

0 投票
1 回答
2068 浏览

iphone - Three20 依赖问题

我查看了three20 源代码并尝试按照本
指南使用该框架构建一个iphone 应用程序。在本指南中,我也使用了模板。他们应该正确编译,但我收到以下错误:

文件 /Users/myUser/programming/three20/src/build/Debug-iphonesimulator/libThree20.a 依赖于自身。这个目标可能包括它自己的产品。

有没有人解决过这个问题?我读到它是关于包含你想要创建的东西,这是不可能的。无论如何,我找到的任何解决方案在这里都没有帮助。

我实际上什至没有改变任何东西!有任何想法吗?

0 投票
4 回答
12450 浏览

python - 检测循环进口

我正在处理一个包含大约 30 个独特模块的项目。它设计得不太好,所以在向项目添加一些新功能时,我通常会创建循环导入。

当然,当我添加循环导入时,我并不知道。有时很明显,当我收到AttributeError: 'module' object has no attribute 'attribute'我明确定义的错误时,我已经进行了循环导入'attribute'。但其他时候,代码不会因为使用方式而引发异常。

所以,对于我的问题:

是否可以以编程方式检测循环导入发生的时间和地点?

到目前为止,我能想到的唯一解决方案是拥有一个importTracking包含 dict的模块importingModules,一个函数importInProgress(file),它递增importingModules[file],如果它大于 1 则抛出错误,以及一个函数importComplete(file)递减importingModules[file]。所有其他模块如下所示:

但这看起来真的很讨厌,必须有更好的方法来做到这一点,对吧?

0 投票
4 回答
3080 浏览

java - 在 Eclipse 中使用循环导入构建 Java 项目

我有一个正在尝试在 Eclipse Galileo 中构建的遗留 Java(不是我的母语)应用程序。

因为它不是我自己的,所以我不能谈论设计的质量,但我遇到了很多这样的例子:

在一个名为“lib_a”的项目中,我将有一个包含以下内容的文件:

另一方面,项目“lib_b”将包含:

当然,问题是无法构建一个项目,因为错误阻止我创建可以作为外部存档添加到另一个项目的 .jar 文件,反之亦然。

在我看来,这在构建 Java 应用程序中一定是相当普遍的现象。从头开始重写它不是一个选择,所以我想知道“其他人在做什么”。

0 投票
7 回答
736 浏览

c++ - 当两个类相互引用时编译 C++

我正在尝试围绕连接指针编写一个简单的包装器,当包装器被销毁时,它将把它返回到池中,但它不会编译,因为 ConnectionPool 和 AutoConn 需要相互声明。

我尝试使用前进减速,但没有奏效。我该如何解决这个问题?(使用 g++)

0 投票
1 回答
645 浏览

java - 在 Swing GUI 中避免循环引用

在这种情况下可能不值得担心,但是假设您有两个类,一个包含所有组件的 JFrame,以及一个处理来自远程客户端的请求的类似服务器的类。用户能够通过 GUI 启动和停止服务器对象,并显示发生在每个服务器对象上的各种事件。无论我是否使用显式模式(如 MVC),似乎 JFrame 需要引用服务器类(调用启动和停止),服务器需要引用 JFrame(通知它某些事件) .

这是一个问题,还是我以错误的方式看待这种情况?

0 投票
4 回答
3793 浏览

python - Python:类型检查所需的循环导入

首先:我知道关于循环进口的话题已经有很多问题和答案了。

答案或多或少是:“正确设计您的模块/类结构,您将不需要循环导入”。那是真实的。我非常努力地为我当前的项目做出合适的设计,我认为我成功了。

但我的具体问题如下:我需要在一个模块中进行类型检查,该模块已经由包含要检查的类的模块导入。但这会引发导入错误。

像这样:

foo.py:

酒吧.py:

解决方案1:如果我修改它以通过字符串比较检查类型,它将起作用。但我不太喜欢这种解决方案(字符串比较对于简单的类型检查来说相当昂贵,并且在重构时可能会出现问题)。

bar_modified.py:

解决方案 2:我也可以将这两个类打包到一个模块中。但是我的项目有很多不同的类,比如“Bar”示例,我想将它们分成不同的模块文件。

在我自己的 2 个解决方案对我来说没有选择之后:有没有人对这个问题有更好的解决方案?

0 投票
3 回答
26489 浏览

c# - 循环依赖解决方案

我们当前的项目遇到了循环依赖问题。我们的业务逻辑程序集使用 SharedLibrary 程序集中的类和静态方法。SharedLibrary 包含一大堆帮助函数,例如 SQL 读取器类、枚举器、全局变量、错误处理、日志记录和验证。

SharedLibrary 需要访问业务对象,但业务对象需要访问 SharedLibrary。老开发者通过在共享库中复制业务对象的功能来解决这种明显的代码异味(非常反 DRY)。我现在花了一天时间尝试阅读有关解决此问题的选项,但我遇到了死胡同。

我对架构重新设计的想法持开放态度,但只是作为最后的手段。那么我怎样才能拥有一个可以访问业务对象的共享助手库,而业务对象仍然访问共享助手库呢?