Хорошая модульная система должна помочь в решении некоторых основных задач разработки программного обеспечения:

  • Возможность разделить кодовую базу на несколько файлов. Это помогает сохранять код более организованным, облегчая его понимание, а также помогает разрабатывать и тестировать различные части функциональности независимо друг от друга.
  • Разрешение повторного использования кода в разных проектах. На самом деле модуль может реализовывать общую функцию, которая может быть полезна для разных проектов. Организация такой функциональности внутри модуля может упростить ее внедрение в различные проекты, которые могут захотеть ее использовать.
  • Инкапсуляция (или сокрытие информации). Как правило, хорошей идеей является скрытие сложности реализации и предоставление только простых интерфейсов с четкими обязанностями. Большинство модульных систем позволяют выборочно скрывать частную часть кода, открывая открытый интерфейс, такой как функции, классы или объекты, которые предназначены для использования потребителями модуля.
  • Управление зависимостями. Хорошая модульная система должна облегчать разработчикам модулей построение поверх существующих модулей, в том числе сторонних. Модульная система также должна облегчать пользователям модулей импорт цепочки зависимостей, необходимых для запуска данного модуля (временные зависимости).

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