Skip to content

Instantly share code, notes, and snippets.

@s9gf4ult
Created July 8, 2016 13:10
Show Gist options
  • Select an option

  • Save s9gf4ult/3de5ee487f61fd33f615e0ee418c3c70 to your computer and use it in GitHub Desktop.

Select an option

Save s9gf4ult/3de5ee487f61fd33f615e0ee418c3c70 to your computer and use it in GitHub Desktop.
  • Монолитный пакет, делающий всё

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

    • Плюсы
      • Мало зависимостей у каждого
        • Быстрая компиляция изза распаралеливания
        • Простота поддержки каждого
      • Явные зависимости между частями проекта
        • Проще поддержка и рефакторинг
      • Более понятные интерфейсы у каждого пакета
        • Проще пользоваться и поддерживать каждый
        • Рефакторинг проще
    • Минусы
      • Если функциональность не лезет ни в один из существующих пакетов, то придется создавать новый пакет.
        • Можно использовать шаблоны.
      • Больше мозговых усилий для подддержания структуры всего проекта.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment