gpt4 book ai didi

java - Java 包之间的每个循环引用都不好吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:22 29 4
gpt4 key购买 nike

<分区>

我使用 Sonar 代码质量管理平台已有一段时间了,在大多数情况下,我发现它对揭示代码库中隐藏的设计缺陷非常有帮助。

但是,有一条规则给我带来的麻烦多于帮助,那就是它检查'循环包引用' 违规行为。

我想我完全理解包之间的这种依赖性在哪里是一件坏事。例如,在典型的 3 层表示/服务/持久层设计中,让数据库处理代码引用回 UI 相关类几乎总是一个坏主意。我不介意称之为“违规”

但是让我们考虑其他情况,例如设计类似 IDE 的应用程序。比如说,我们有一个包含 Application 的主包接口(interface),它定义了 List<View> Application.getViews()引用应用程序 View 的方法。

但是,当 View接口(interface)有一个 Application getApplication()引用其父应用程序的方法,我认为这是一个很常见的设计,它将引入循环引用,前提是每个接口(interface)都在 com.myapp.ui 中分开。 , 和 com.myapp.ui.view分别。

当然,你可以只把View界面进入com.myapp.ui打破循环。但是当您在 com.myapp.ui.view 中有各种其他与 View 相关的 API 时,其中许多是另一种抽象 API,如 AbstractView , ContentView , AbstractContentView等。我想知道出于管理目的,将它们放在单独的包中是否更可取。

考虑到上述应用程序还有许多其他类似情况,例如 com.myapp.ui.action , com.myapp.ui.perspective , 等等,这真的会使 com.myapp.ui如果我们要把它们都放在那里,包裹会很拥挤。

那么,您建议采用什么方法来处理这种情况?真的每个循环包引用都是坏事吗?或者,如果我不得不忍受它们,您如何配置 Sonar 以仅检查真实的、有问题的周期?

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