Java的重构/重构工具

时间:2012-03-01 12:10:24

标签: java refactoring automated-refactoring

我有一个庞大的单片Web应用程序,我希望分成更小的模块。作为第一步,我想更改目前的包层次结构:

 - com.companyname.project
  - dao
     - bean
         - booking // possibly containing more sub packages
         - core   
         ... etc etc (there are a bunch of others as well)
     - service
         - booking // possibly containing more sub packages
         - core   
         ... etc etc  
  - logic
     - bean
         - booking // possibly containing more sub packages
         - core   
         ... etc etc
     - service
         - booking
         - core   
         ... etc etc
  - web
     - bean  // same substructure as above...
     - service  // same substructure as above...
     - taglib  // same substructure as above...
     - util

如果用于booking实例的包结构作为com.companyname.project下面的包名称

,我希望如此

现在我想知道是否有一个工具可以使用简单的正则表达式为我进行重组。

E.g。
com.companyname.project.dao.bean.booking
会成为:
com.companyname.project.booking.dao.bean

com.companyname.project.dao.service.booking
会成为:
com.companyname.project.booking.dao.service

我可以使用Eclipse并拖放包,但是我正在寻找可以通过最小限度来实现这一目标的东西,因为它将是非常重复的。

2 个答案:

答案 0 :(得分:1)

您可以使用任何具有重构兼容性的Java IDE:

  • IntelliJ IDEA(最佳重构支持)。它有开源社区版和封闭源终极版。
  • Eclipse(开源)
  • NetBeans(开源)

我不建议您使用正则表达式搜索/替换,因为它容易出错。

答案 1 :(得分:-1)

为什么不使用Java本身?我相信你当前的场景,你可以轻松编写一个小的Java程序来完成你正在讨论的精确重构,并确保在此过程中不会遗漏任何内容。

您可以编写一个方法,其中包含“pre”(即“com.companyname.project.dao.bean.booking”)和“post”(即“com.companyname.project.booking.dao.bean”)参数并将“预”结构适当地复制到“后”结构中。

在这个程序中,我设想了一个主方法和一个“convertPackage(pre,post)”方法。然后,您可以拥有一个“pre”和“post”结构的数组,并循环将它们转换为new。最好将此复制到某种临时目录中,而不是将原始目录复制为附加的安全措施。

也许我的想法太简单了,但是我可以看到一个程序可以在一天半或更短的时间内完成这个重构。

您将获得额外的好处,即完全正在发生什么变化,而不是这些自动化工具带来的不安全感可能为您做好或不做...