Tag: 循环依赖

任何关于如何避免在Go中导入循环的好build议?

我正在做一个Go项目一个月。 好的是Go非常高效。 但经过一个月的发展,我已经有了数千行代码和许多packages 。 为了避免导入周期对我来说是一个主要的问题,任何时候我有一个导入周期的错误,我不知道这个问题可能在第一时间。 Go编译器也只有非常简单的通知,总是不够好,不能像以下情况main.go:7:3: import cycle not allowed定位问题: main.go:7:3: import cycle not allowed 。 它只会帮助你知道哪个文件可能导致问题,但没有更深层次的。 由于在代码增长的同时, import关系变得越来越复杂,所以我很想知道如何在Go中更有效地避免导入循环。 任何帮助深表感谢。

游戏对象互相交谈

处理物体并让它们相互交谈的好方法是什么? 到目前为止,我的所有游戏爱好/学生都很小,所以这个问题通常是以相当难看的方式解决的,这导致了tight integration和circular dependencies 。 对于我正在做的项目的规模来说,这是很好的。 但是我的项目在规模和复杂性方面都变得越来越大,现在我想开始重新使用代码,并让我的头变得更简单。 我所遇到的主要问题一般是根据Player需要了解的Map , Enemy也是如此,这通常会降低到设置很多的指针,并且有很多的依赖关系,这很快就会变成一团糟。 我曾经思考过一个消息风格系统。 但我真的不知道这是如何减less依赖,因为我仍然会发送指针到处。 谢谢。 PS:我猜这是以前讨论过的,但是我不知道它叫做什么,只是我有这个需要。

将所有代码放在C ++头文件中的优点和缺点?

您可以构造一个C ++程序,以便(几乎)所有的代码都驻留在头文件中。 它本质上看起来像一个C#或Java程序。 但是,编译时,至less需要一个.cpp文件来引入所有头文件。 现在我知道有些人会绝对厌恶这个想法。 但我还没有发现这样做的任何令人信服的缺点。 我可以列举一些优点: [1]更快的编译时间。 所有的头文件只被parsing一次,因为只有一个.cpp文件。 此外,一个头文件不能被包含超过一次,否则你将得到一个生成中断。 当使用替代方法时,还有其他方法可以实现更快的编译,但是这非常简单。 [2]它通过使它们绝对清楚,避免循环依赖。 如果ClassA.h中的ClassA对ClassA.h中的ClassB具有循环依赖关系,那么我必须提供一个前向引用。 (请注意,这不像C#和Java,编译器自动解决循环依赖,这鼓励了错误的编码实践IMO)。 同样,如果你的代码是在.cpp文件中,你可以避免循环依赖,但是在真实世界的项目中, .cpp文件往往会包含随机的头文件,直到找不到谁依赖于谁。 你的想法?

Python中的循环依赖

我有两个文件node.py和path.py ,它们分别定义了两个类Node和Path 。 到目前为止, Path的定义引用了Node对象,因此我完成了 from node.py import * 在path.py文件中。 但是,截至今天,我为引用Path对象的Node创build了一个新的方法。 尝试导入path.py时遇到了问题:我试了一下,当程序运行并调用使用Node的Path方法时,出现了一个exception,导致Node没有被定义。 我该怎么办?

如何避免在Python中循环导入?

我知道Python的循环导入问题已经出现了很多次,我已经阅读了这些讨论。 在这些讨论中反复提出的意见是,循环import是一个糟糕的devise的标志,应重新组织代码,以避免循环导入。 有人可以告诉我如何在这种情况下避免循环导入吗?我有两个类,我希望每个类都有一个构造函数(方法),它需要另一个类的实例并返回类的一个实例。 更具体地说,一个类是可变的,一个是不可变的。 哈希,比较等需要不可变类。 可变类也需要做的事情。 这与sets和frozensets或列表和元组类似。 我可以把两个类定义放在同一个模块中。 还有其他build议吗? 一个玩具的例子是A类,它有一个属性是一个列表,而B类有一个属性是一个元组。 然后,类A有一个方法,它接受一个类B的实例,并返回一个类A的实例(通过将元组转换为一个列表),同样,类B有一个方法,它接受一个类A的实例并返回一个类B的实例(通过将列表转换为元组)。

循环C ++头包含

在一个项目中,我有两个类: // mainw.h #include "IFr.h" … class mainw { public: static IFr ifr; static CSize=100; … }; // IFr.h #include "mainw.h" … class IFr { public float[mainw::CSize]; }; 但是我不能编译这个代码,在static IFr ifr;得到错误static IFr ifr; 线。 这种交叉包含是禁止的吗?

循环引用导致内存泄漏?

我试图在Windows窗体应用程序中运行内存泄漏。 我现在正在看一个包含几个embedded表单的表单。 令我担心的是,孩子在构造函数中形成父表单,并将其保存在私有成员字段中。 所以在我看来垃圾收集时间: 家长通过控件集合(子表单embedded在那里)引用了子表单。 子表格不是GC'd。 子表单通过私有成员字段具有对父表单的引用。 父表格不是GC'd。 这是一个准确的了解如何垃圾收集器将评估的情况? 任何方式来“certificate”它的testing目的?

Python循环导入?

所以我得到这个错误 Traceback (most recent call last): File "/Users/alex/dev/runswift/utils/sim2014/simulator.py", line 3, in <module> from world import World File "/Users/alex/dev/runswift/utils/sim2014/world.py", line 2, in <module> from entities.field import Field File "/Users/alex/dev/runswift/utils/sim2014/entities/field.py", line 2, in <module> from entities.goal import Goal File "/Users/alex/dev/runswift/utils/sim2014/entities/goal.py", line 2, in <module> from entities.post import Post File "/Users/alex/dev/runswift/utils/sim2014/entities/post.py", line 4, in <module> from physics import […]

如何处理Node.js中的循环依赖关系

最近我一直在和nodejs一起工作,如果这是一个明显的问题,我们还是要继续关注模块系统。 我想要的代码大致如下所示: a.js (主节点运行的主文件) var ClassB = require("./b"); var ClassA = function() { this.thing = new ClassB(); this.property = 5; } var a = new ClassA(); module.exports = a; b.js var a = require("./a"); var ClassB = function() { } ClassB.prototype.doSomethingLater() { util.log(a.property); } module.exports = ClassB; 我的问题似乎是,我不能从ClassB的实例内访问ClassA的实例。 有没有一个正确/更好的方式来构build模块来实现我想要的? 有没有更好的方式来分享模块之间的variables?

Python中的循环导入依赖

假设我有以下目录结构: a\ __init__.py b\ __init__.py c\ __init__.py c_file.py d\ __init__.py d_file.py 在a包的__init__.py , c包被导入。 但是c_file.py导入abd 。 程序失败,当c_file.py尝试导入abd时,说b不存在。 (而且它确实不存在,因为我们正在导入它。) 这个问题怎么解决?