gpt4 book ai didi

java - 这是什么意思以及如何修复 SonarQube Java 问题 "Cycles between packages should be removed"(鱿鱼 :CycleBetweenPackages)

转载 作者:行者123 更新时间:2023-11-29 04:52:30 26 4
gpt4 key购买 nike

当这些包中的类之间存在使用或导入类型的依赖时,包之间就存在循环。

考虑以下示例。假设有 4 个类:Truckorg.example.car 包中的接口(interface) Car 以及 NavigationCPU 在包 org.example.part 中。在包 org.example.carorg.example.part 中,我们有类 Truck --> Car 和类 之间的使用关系导航 --> CPU。假设 Truck 类使用 Navigation 类,所以我们有数据包之间的关系 org.example.car --> org.example.part .然后假设类CPU也使用了Car接口(interface),这给了我们包之间的关系org.example.part --> org.example.car。尽管 Navigation 类不使用任何类的数据包 org.example.car 我们在包中的相邻类(CPU 类)上有一个循环.

这个例子如下图所示:

dependency-cycles-in-packages

当一个循环中涉及多个包时,这意味着这些包高度耦合,如果不导入所有其他包,就无法重用/提取其中一个包。这样的循环可能会迅速增加维护应用程序和接受业务变更所需的工作量。

最佳答案

要修复包中的依赖循环,您应该引入额外的包并将几个依赖类/接口(interface)移动到新创建的包中。

如下图所示:

dependency-cycles-fixed

在我们的示例中,让我们选择将接口(interface)Car 移动到新创建的包org.example.api。这打破了依赖循环并降低了我们应用程序中的技术部门。现在,所有包仅以一种方式具有依赖关系,并且可以根据需要将它们拆分为不同的工件。

关于java - 这是什么意思以及如何修复 SonarQube Java 问题 "Cycles between packages should be removed"(鱿鱼 :CycleBetweenPackages),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34899712/

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