Skip to content

Разделить объявление структуры команды от её обработки #164

@ArtemK123

Description

@ArtemK123

Сейчас все команды имеют одновременно:

  1. Свойства, которые описывают структуру команды
  2. Метод ApplyOn, который хранит в себе логику обработки команды (почти всегда там просто вызов репозитория)

Я вижу в этом следующие проблемы:

  1. Нарушение SRP.
  2. Проблемы с расширяемостью. Когда для обработки команды нужно будет больше кода, чем вызов репозитория, то непонятно, куда этот код ложить - в саму команду, в сервис выше или в репозиторий.
  3. Смешение парадигм - команда одновременно и ДТО, и объект. Выходит, тут одновременно и структурное програмирование, и ООП.

Я предлагаю сделать команды просто как ДТО, а логику их обработки выносить в отдельные хендлеры. При этом, репозитории могут принимать саму команду в своих методах, что освободит от лишнего перекладывания параметров.

Более того - такой подход можно использовать и для query запросов. Все get запросы тоже можно оформить как дто+обработчик. Тогда высокоуровневые сервисы (каталоги) будут создавать команду или запрос и передавать их в нужный хендлер. Чтобы уменьшить связанность, можно использовать MediatR. Он будет находить подходящий обработчик для команд и запросов автоматически.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions