是否有任何工具/软件可以解耦Java Swing GUI逻辑和业务逻辑?

时间:2011-03-08 16:00:29

标签: java swing

我一直致力于Java Swing项目。它的设计很差。我被赋予了使其设计更好的任务。主要是我认为我将通过遵循MVC模式来解耦Java Swing代码和业务代码。

手动执行此操作似乎容易出错。是否有任何工具/软件可以解耦GUI层代码(用Java Swing编写)和业务层代码(用核心Java编写)。

4 个答案:

答案 0 :(得分:3)

据我所知,问题的答案是“不,没有这样的工具。”

我会冒险猜测,有人甚至不可能制作这样的工具。问题在于,没有简单的方法来区分“业务逻辑”和“GUI”代码。

在我参与过的项目中,我们在设计阶段共同努力,以保持GUI和业务逻辑分离,但我无法计算交叉的不可避免的次数特别是当某些业务规则推动了GUI的行为方式时。

我不羡慕你的任务。处理和修改现有代码,尤其是您未创建的代码,容易出错。而MVC编程的整个概念实际上只是思考如何构建程序而不是一组现有的工具库。

我在Smalltalk时代开始学习MVC编程,当时它最初是由Xerox Parc的聪明人发明的,甚至他们也无法避免代码的交叉耦合。

答案 1 :(得分:2)

当输入定义良好且结构合理时,自动化工具可以很好地工作。根据您所描述的内容,您的输入远非如此。

是的,做这项工作将会很复杂并且需要做很多工作。但这是你需要卷起袖子然后潜入它的东西。在您开始触摸代码之前,请坐下来确保您完全了解现在的布局(以及为什么这是一件坏事)。然后开始计划如何做得更好。

现在你已经有了应该如何做的计划,开始使用代码并更新遗留代码。

答案 2 :(得分:1)

没有工具,但有技术。

重构是一种对代码进行细微更改以改变其体系结构而不改变其功能的做法。你可能已经完成了一定程度的重构,但有时阅读你所知道的主题可以帮助提高你的技能。

许多IDE确实支持一些简单的重构。 Eclipse和NetBeans在重构支持方面有不同的优势,根据您当前的环境,您可能会发现一个比另一个更有用。

对你来说,重构不会给你一个如何从A点(你的意大利面条代码)到B点(你干净利落的MVC)的路线图。相反,它只会让你成为一个更好的驾驶员。不幸的是,(或者幸运的是,那里的所有开发人员)仍然需要良好的大脑来确定代码的哪些部分打算做,以及它们是否更适合放置在模型,视图或控制器中。其余的只是以这样的方式梳理出依赖关系,你最终可以在序列中向上或向下移动代码,并最终将其推送到一个方法,然后可以将其移动到适当的类。

祝你好运。

答案 3 :(得分:0)

我也不知道任何工具。正如其他人 - 有点 - 指出的那样,我认为这样的工具最终会使程序员变得多余。我们不希望这样,我们。 :-D

但是,手动检查你是否真的设法解耦代码不应该是复杂的。只需确保您的“业务部分”不会导入任何套餐:

  • 在文件中找到“swing”
  • 将所有这些文件移到一个包中
  • 检查那里是否有“业务逻辑”=>把它拿出来
  • ...