Модули против слоев в структуре пакета Java - PullRequest
7 голосов
/ 27 января 2011

Раньше все складывалось в такие пакеты:

com.company.app.module1
com.company.app.module2

Но это усложнило работу с пакетными точечными вызовами AOP и привело к созданию огромных пакетов, для которых нужна среда разработки.

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

com.company.app.module1.domain
com.company.app.module1.logic
com.company.app.module1.persistence
com.company.app.module2.domain
com.company.app.module2.logic
com.company.app.module2.persistence

или дать предпочтение слоям, как это?

com.company.app.domain.module1
com.company.app.domain.module2
com.company.app.logic.module1
com.company.app.logic.module2
com.company.app.persistence.module1
com.company.app.persistence.module2

Плюсы и минусы каждого?

Ответы [ 5 ]

7 голосов
/ 27 января 2011

Модули-первый.

У меня был проект, который изначально был первым, но он стал слишком громоздким, чтобы его можно было читать и поддерживать, поэтому мы реорганизовали его. Он также использовал АОП - без проблем. Мы просто использовали .. в середине определения пакета (мы использовали spring aop с синтаксисом aspectj). Вот как это выглядит:

execution(* com.foo.app.modules..service..*.*(..))

Это соответствует modules.module1.service и modules.module2.service

3 голосов
/ 27 января 2011

Организация по модулям позволяет разработчикам сосредоточиться на наборе функций как единице поставки, а не на технической инфраструктуре.Масштабирование вашей кодовой базы, вероятно, будет проще, если вы разберете вещи на основе модулей - некоторые проекты с открытым исходным кодом, чей код, на который я смотрел (например, Artifactory и Continuum), организовали вещи таким образом, но я не посмотрел достаточно, чтобы узнать, так лиэто общая тенденция.

Это, вероятно, зависит, в зависимости от базового размера кода.

2 голосов
/ 27 января 2011

Признаюсь, я никогда не делал много (формального) АОП.

Лично я бы поставил модули первыми.

Таким образом, если вы позже разделитемодули в несколько файлов JAR / WAR (например, в отдельный проект maven), они уже находятся в правильной структуре каталогов, чтобы разделить их по модулям.

1 голос
/ 29 июня 2012

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

1 голос
/ 27 января 2011

Я бы организовал иерархию пакетов по слоям, чтобы позволить вашим инструментам работать. Каждый модуль будет идти в свой собственный проект со своей собственной исходной папкой. Это упрощает группировку с ориентацией на модули в среде IDE и разработчиках, а ориентированные на слои инструменты - на уровне слоев

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...