Рефакторинг / Реструктуризация инструмента для Java - PullRequest
4 голосов
/ 01 марта 2012

У меня есть большое монолитное веб-приложение, которое я хочу разбить на более мелкие модули.В качестве первого шага я хотел бы изменить иерархию пакетов, которая в настоящее время выглядит следующим образом:

 - 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

Теперь мне интересно, есть ли инструмент, который, например, мог бы использовать простое регулярное выражение, чтобы сделать реструктуризацию для меня.

Например,
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 ]

1 голос
/ 01 марта 2012

Вы можете использовать любую из Java IDE с совместимостью рефакторинга:

  • IntelliJ IDEA (лучшая поддержка рефакторинга).Он имеет версию с открытым исходным кодом для сообщества и окончательную версию с закрытым исходным кодом.
  • Eclipse (с открытым исходным кодом)
  • NetBeans (с открытым исходным кодом)

Я не рекомендую использоватьпоиск / замена regexp, так как он подвержен ошибкам.

0 голосов
/ 28 марта 2012

Почему бы не использовать саму Java? Я полагаю, что в вашем текущем сценарии вы могли бы легко написать небольшую Java-программу, чтобы выполнить точный рефакторинг, о котором вы говорите, и убедиться, что по пути ничего не упущено.

Вы можете написать метод, который принимает параметры pre (то есть com.companyname.project.dao.bean.booking) и post (то есть com.companyname.project.booking.dao.bean). и соответствующим образом копирует структуру «pre» в структуру «post».

В этой программе я представляю основной метод и метод convertPackage (pre, post). Затем вы можете иметь массив ваших структур «pre» и «post» и циклически преобразовывать их в новые. Было бы лучше сделать это копирование в какой-то временный каталог, а не копировать оригинал в качестве дополнительной меры безопасности.

Возможно, мои мысли слишком просты, но я мог видеть программу, созданную для этого рефакторинга за 1/2 дня или меньше.

Вы получите дополнительное преимущество, зная точно , что меняется, а не небезопасность, которая приходит с этими автоматизированными инструментами, которые могут сделать это правильно для вас или нет .. .

...