gpt4 book ai didi

visual-studio - 循环引用有必要吗?

转载 作者:行者123 更新时间:2023-12-04 06:11:36 24 4
gpt4 key购买 nike

我继承了一个 Visual Studio 解决方案,其中包含项目之间的大量循环引用。

有没有一种情况可以远程接受?

只是想证实我的怀疑,这个应用程序设计得很糟糕。提前致谢。

最佳答案

我曾经读过一个专栏,他们比较了三种模型:意大利面条模型、千层面模型和馄饨模型。

意大利面 模型中,所有的代码都是相互联系的,没有清晰的结构。这太可怕了,我们可能都同意这一点。

千层面 在模型中,代码被划分为不同的层,只有高层才能访问低层,反之亦然。

馄饨 模型,代码被分组在更小的模块中。每个模块只公开需要公开的内容,但每个模块仍然可以访问其他所有模块。

大约 10 年前,在我看来,馄饨模型比千层面模型更好。毕竟,在 Java 中,您也有可以轻松相互调用的 Java 模块(我的印象是所有不同的 Java 模块之间没有真正的结构)。对我来说,Lasagna 模型似乎是非面向对象的旧代码的结果,而 Ravioli 模型似乎更现代,更面向对象。

如今,我倾向于回到千层面模型,但内置了馄饨模型。这是:

  • 该应用程序是使用不同的层构建的,例如在千层面模型中
  • 但是在这些层中,代码仍然被分割在可以相互访问的不同模块之间,就像在馄饨模型中一样。

  • 某些循环引用可能很难或不可能删除。一个例子如下:
    假设您的应用程序中有一个 FileWriter 类和一个 Debug 类。 Debug 类将需要 FileWriter 类,因为它需要编写带有调试信息的文件。
    另一方面,FileWriter 类可能还想使用 Debug 类。

    注意这个例子中的循环引用可能已经导致问题了(FileWriter类可以在写一行的时候调用Debug类,但是Debug类使用FileWriter类来写调试信息,结果:栈溢出)。

    在这种情况下,通过不使用 Debug 类中的 FileWriter 类,而是使用 native iostream(如果您使用 C++ 进行开发),可以轻松解决问题。在其他情况下,问题可能更难解决。

    关于visual-studio - 循环引用有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585963/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com