Joh*_*ski 6 circular-dependency circular-reference visual-studio
我继承了一个Visual Studio解决方案,它包含了Projects之间的许多循环引用.
是否存在远程可接受的情况?
试图证实我怀疑这个应用程序设计可怕.提前致谢.
我曾读过一篇专栏文章,比较了3种模型:Spaghetti模型,Lasagna模型和Ravioli模型.
在Spaghetti模型中,所有代码都相互关联,没有明确的结构.这太可怕了,我们大家都同意这一点.
在Lasagna模型中,代码分为不同的层,只有更高层的层可以访问更低层,而不是相反.
在Ravioli模型中,代码分组为较小的模块.每个模块只暴露需要暴露的内容,但每个模块仍然可以访问每个其他模块.
大约10年前,在我看来,Ravioli模型比Lasagna模型更好.毕竟,在Java中你也有Java模块可以很容易地相互调用(我的印象是所有不同的Java模块之间没有真正的结构).对我来说,Lasagna模型似乎是非面向对象旧代码的结果,而Ravioli模型似乎更现代,更面向对象.
如今,我倾向于回到Lasagna模型,但内置了Ravioli模型.这是:
某些循环引用可能很难或不可能删除.示例如下:假设您的应用程序中有一个FileWriter类和一个Debug类.Debug类需要FileWriter类,因为它需要编写带有调试信息的文件.另一方面,FileWriter类也可能希望使用Debug类.
请注意,此示例中的循环引用可能已经导致问题(FileWriter类可以在编写行时调用Debug类,但Debug类使用FileWriter类来编写调试信息,结果:堆栈溢出).
在这种情况下,可以通过不在Debug类中使用FileWriter类来轻松解决问题,而是使用本机iostream(如果您在C++中开发).在其他情况下,问题可能更难解决.
归档时间: |
|
查看次数: |
609 次 |
最近记录: |