Соблюдаете ли вы какие-либо правила (java) в упаковке? - PullRequest
2 голосов
/ 24 марта 2009

Соблюдаете ли вы какие-либо руководящие указания по дизайну упаковки Java?

Является ли правильная упаковка частью дизайна? Есть ли документ об этом?

Редактировать: Как пакеты должны зависеть друг от друга? Циклические пакеты неизбежны ?, а не файлы jar или war.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2013

Мой подход, которому я стараюсь следовать, выглядит следующим образом:

  1. Имеют пакеты разумного размера. Менее чем 3 класса странно. Менее 10 хорошо. Более 30 не допускается. Я обычно не очень строг в этом.
  2. Нет циклов зависимости между пакетами. Это сложно, так как многим разработчикам трудно найти какой-либо способ сохранить цикл зависимостей свободным. НО при этом выявляется много скрытой структуры в коде. Становится легче думать о структуре кода и легче развивать его.
  3. Определите слой и модули и то, как они представлены в коде. Часто я получаю нечто вроде <domain>.<application>.<module>.<layer>.<arbitrary substructure as needed> в качестве шаблона для имен пакетов
  4. Нет циклов между слоями; нет циклов между модулями.

Чтобы избежать циклов, нужно иметь проверки. Многие инструменты делают это (JDepend, Sonar ...). К сожалению, они мало помогают в поиске способов исправления циклов. Вот почему я начал работать над Degraph , который должен помочь с этим, визуализируя зависимости между классами, пакетами, модулями и слоем.

1 голос
/ 24 марта 2009

Упаковка обычно составляет около Управление выпуском , и общие рекомендации:

  • согласованность : когда вы выпускаете в интеграцию, предварительную или производственную среду несколько поставок, вы хотите, чтобы они организовывались (или «упаковывались») точно так же, как

  • небольшое количество файлов : когда вам нужно скопировать набор файлов из одной среды в другую, вы хотите скопировать как можно больше, если их количество разумно (10-20 макс. для каждого компонента), вы можете просто скопировать их (даже если эти файлы важны по размеру)

Итак, вы хотите определить общую структуру для каждой доставки, например:

aDelivery/
    lib // all jar, ear, war, ...
    bin // all scripts used to launch your application: sh, bat, ant files, ...
    config // all properties files, config files
    src // all sources zipped into jars
    docs // javadoc zipped 
    ...

Кроме того, все эти общие структуры каталогов должны храниться в одном общем хранилище (VCS, или Maven Repo, или ...), для того чтобы их можно было запросить, без необходимости перестраивать их каждый раз, когда вам нужно их (вам это не нужно, если у вас есть только один или два компонента доставки, но при наличии от 40 до 60 из них ... полное восстановление не может быть и речи).

0 голосов
/ 11 мая 2009

Проблема с упаковкой в ​​Java заключается в том, что она очень мало связана с тем, что вы хотели бы сделать. Например, мне нравится следовать соглашению Eclipse, в котором пакеты помечены как внутренние, но я не могу определить их классы с уровнем защиты «пакета».

0 голосов
/ 24 марта 2009
...