Переосмысление чистой архитектуры: использование вертикальных срезов

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

  1. Понимание чистой архитектуры.
    Чистая архитектура выступает за организацию программных систем в уровни с четкими зависимостями, такие как уровень домена, уровень приложения и уровень инфраструктуры. Такой подход гарантирует, что бизнес-логика остается отделенной от внешних зависимостей.

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

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

  4. Преимущества вертикальных срезов:
    4.1 Улучшенная модульность: вертикальные срезы позволяют разработчикам инкапсулировать связанный код в один модуль, что упрощает его понимание и поддержку.
    4.2 Расширение возможностей сотрудничества: с помощью вертикальных срезов межфункциональные команды могут работать над отдельными функциями, не наступая друг другу на ногу, что приводит к повышению производительности.
    4.3 Упрощенное тестирование: вертикальные срезы упрощают написание целевых и изолированных тестов для отдельных функций, улучшая тестируемость и сокращая объем усилия по тестированию.

  5. Реализация вертикальных срезов:
    5.1. Структура по функциям. Вместо разделения кода по слоям организуйте его по функциям. Каждая функция будет иметь свой собственный набор папок, содержащих соответствующие компоненты, такие как контроллеры, службы и доступ к данным.
    5.2 Общее ядро: Определите общее ядро, которое содержит общие функции, общие для нескольких вертикальных срезов, чтобы избежать дублирования.
    5.3 Связь между срезами. Используйте события, обмен сообщениями или общие базы данных для облегчения связи между вертикальными срезами.

Пример кода:
Давайте рассмотрим приложение электронной коммерции с двумя функциями: каталогом продуктов и управлением пользователями. В подходе «Чистая архитектура» эти функции будут разделены на разные уровни. Однако с помощью вертикальных срезов мы можем организовать код следующим образом:

  • каталог товаров

    • контроллеры
    • услуги
    • доступ к данным
  • управление пользователями

    • контроллеры
    • услуги
    • доступ к данным

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

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