我一直在做Java Swing项目。它的设计相当糟糕。我的任务是让它的设计更好。我最初的想法是通过遵循MVC模式将Java Swing代码和业务代码解耦。
手动做这件事似乎很容易出错。是否有工具/软件可以将GUI层代码(用Java Swing编写)和业务层代码(用核心Java编写)解耦。
发布于 2011-03-09 00:10:05
据我所知,这个问题的答案是“不,没有这样的工具。”
我敢说,有人甚至不太可能制作这样的工具。问题是没有简单的方法来区分“业务逻辑”和"GUI“代码。
在我参与的项目中,我们在设计阶段做出了协调一致的努力,以保持GUI和业务逻辑的分离,但我数不清有多少次不可避免地存在交叉,特别是当一些业务规则驱动GUI应该如何行为的时候。
我不羡慕你的任务。处理和修改现有代码,特别是不是您创建的代码,很容易出错。MVC编程的整个概念实际上只是思考如何构建一个程序,而不是使用一组现有的工具库。
我早在Smalltalk时代就学会了MVC编程,当时它最初是由Xerox Parc的聪明人发明的,甚至他们也无法避免代码的一些交叉耦合。
发布于 2011-03-09 00:12:09
当输入被良好定义和结构化时,自动化工具就能很好地工作。根据您所描述的,您的输入远非如此。
是的,做这项工作将是复杂的和大量的工作。但这是你只需要卷起袖子投入其中的东西。在您开始接触代码之前,请坐下来并确保您完全了解现在是如何布局的(以及为什么这是件坏事)。然后开始计划如何做得更好。
既然您已经有了事情应该如何发展的计划,那么就开始使用代码并更新遗留代码。
发布于 2011-03-09 00:18:16
没有工具,但有技术。
重构是一种在不改变其功能的情况下对代码进行微小更改以改变其体系结构的实践。您可能已经在一定程度上完成了重构,但有时阅读您所了解的主题可以帮助您提高技能。
许多IDE确实支持一些简单的重构。Eclipse和NetBeans在重构支持方面有不同的优势,根据您当前的环境,您可能会发现其中一个比另一个更有用。
重构不会给你提供一个路线图,告诉你如何从A点(你的意大利面条代码)到B点(你干净地分离出来的MVC)。相反,它只会让你成为一个更好的司机。不幸的是,(或者对所有开发人员来说幸运的是),仍然需要聪明的头脑来弄清楚代码段要做什么,以及它们是放在模型、视图还是控制器中更合适。剩下的就是以这样一种方式梳理出依赖关系,即您最终可以在序列中向上或向下移动代码,并最终将其推入一个方法中,然后该方法可以移动到适当的类。
祝好运。
https://stackoverflow.com/questions/5234954
复制相似问题