Использование модулей в Java-программировании

Надеюсь, это вопрос, который требует только довольно быстрого ответа, но мне не очень повезло найти что-то в сети, которое я понял в терминах!

Весьма просто, я работаю над своим первым реальным проектом в Java, текстовым приключением (с использованием IntelliJ IDEA), и мне просто интересно, нужно ли мне разбивать мой код на модули? Итак, для моих монстров, должен ли я держать все свои классы монстров в модуле под названием Monsters, или я могу просто сохранить его в том же модуле?

Я только спрашиваю, потому что; а) Я не был уверен, что это было сделано, чтобы поддерживать порядок в проекте и б) Когда я попытался создать модуль Monster, я получил предупреждение о том, что файлы в этом модуле не будут доступны из остальной части программы, которая, кажется, победит объект для меня...

Большое спасибо заранее за любой совет!

2 ответа

Я считаю, что вы имеете в виду концепцию IntelliJ модуля. Как указано на их странице:

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

Модули содержат все, что требуется для их конкретных задач: исходный код, сценарии сборки, модульные тесты, дескрипторы развертывания и документация. Однако модули существуют и функционируют только в контексте проекта.

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

Как и в ответе thecbuilder, вы должны посмотреть на использование системы упаковки Java.


По модулю, если вы имеете в виду packages, то это хорошая привычка держать связанные классы в одном пакете и распространять несвязанные классы в разных пакетах.

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

Подробнее о структурировании пакетов:

  1. http://www.javapractices.com/topic/TopicAction.do?Id=205
  2. http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
  3. qaru.site/questions/42618/...

Для спецификаторов доступа:

Снято с: http://www.go4expert.com/articles/java-access-specifiers-t28019/

licensed under cc by-sa 3.0 with attribution.