【发布时间】:2011-04-19 00:50:03
【问题描述】:
我们的 Java 代码库对于单个整体 JAR(超过 5000 个类)来说已经变得太大了。我们正在调查的任务之一是将这个单一的 JAR 分解成更小的组件并在它们之间具有受控的依赖关系需要付出多大的努力。但是,查看一大包代码并确保在不进行一些分析的情况下找到最佳分离点有点困难。
是否有很好的工具来检查和可视化包间依赖关系?鉴于这些,我们将有一组建议的切点,我们可以开始分离代码。
举个例子,在 Netbeans 和 Eclipse 之前的日子里(在不同的工作中),我们使用了 TogetherJ 和 TogetherEnterprise。那些有能力进行静态包分析并绘制 UML 图。这种行为是最佳的,但仅凭该功能不足以证明成本合理。
【问题讨论】:
-
我认为如果你需要一个工具来告诉你如何组织你的 5000 个课程,那么你遇到的麻烦比这个工具能把你拉出来的麻烦更大。祝你好运。
-
@z5h,说实话?为什么不使用工具来查找依赖项?这种工具的输出对于推动重构工作非常有用。请记住,这种方法可以帮助您识别相互耦合较弱的节点。然后,这些节点可以成为单独可交付构建产品的候选者。更短的构建时间、本地化更改等都是这种重构的强烈动机。如果有工具可以帮助指出“从这里开始,这个切割很容易”,你为什么不使用这样的东西?
-
我只是在“评论”说,如果您正处于拥有 5000 个类的阶段,并且没有足够的应用程序架构来引导您朝着正确的方向前进,而没有工具,那么听起来情况很糟糕。这不是一个优化练习,其中一个工具会告诉你接下来要看什么。这是您的应用程序的整个架构,应该更好地处理它。如果您使用该工具来验证想法,那听起来不错。如果它引领您的设计,那听起来很可怕。您说得好像该工具将引领您的设计。
-
@z5h,不,代码不是架构。代码就是实现。该架构可以用线条画出方框并说“这是预期的设计”。检查工具可以查看代码并确保架构图上的任何框都没有隐藏连接,而它们不应该隐藏连接。例如,一个杂散的剩余“包含”可能会在两段代码之间引入依赖关系,这两条代码本不应该耦合,但现在有一个隐藏的错误依赖关系,会影响构建顺序。该工具可以检查您的代码以确保它与架构匹配。
标签: java uml dependencies packages static-analysis