Переход на DDD

Обсуждаем, как правильно строить приложения
Ответить
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Переход на DDD

Сообщение futbolim »

Приветствую. Подскажите, как плавно переходить к DDD? Сейчас yii2-app-advanced. Всё обычно. Бизнес-логика в моделях.
Оговорюсь сразу: всё, что я знаю о DDD - это один просмотренный видеоролик Дмитрия Науменко. В перспективе ожидается более-менее большой сайт. Цифру 42, скорее всего, мы перепрыгнем. Преследую две цели: научиться и сами потребности. Первое, что приходит на ум, это перенести константы в классы. Сейчас есть интерфейс, который подмешивает их:

Код: Выделить всё

interface StatusConstantInterface {
    const STATUS_DELETED =  10;
    const STATUS_DUMMY = 20;
    const STATUS_REGISTERED_THROUGH_SOCIAL_NETWORK = 25;
    const STATUS_EMAIL_NOT_CONFIRMED = 30;
    const STATUS_PHONE_NOT_CONFIRMED = 40;
    const STATUS_ACTIVE =  50;
    const STATUS_CLOSED = 60;
    const STATUS_DRAFT = 70;
    const STATUS_DISABLED = 80;
    const STATUS_SENT = 90;
    const STATUS_BANNED = 100;
    const STATUS_CANCELED = 110;
    const STATUS_CREATED = 120;
    const STATUS_PAYED = 130;
    const STATUS_DECLINED = 140;
    const STATUS_APPROVED = 150;
    const STATUS_HIDDEN = 160;
    const STATUS_MODERATED = 170;
}
Ещё думаю из AR::afterSave и прочих попереносить в Сервисы.

Поделитесь, кто как расширяется?
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Переход на DDD

Сообщение futbolim »

Тема больше не актуальна. Нашёл книгу Эванса. По введению понятно, что это именно то, что нужно. Спасибо!
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Переход на DDD

Сообщение SiZE »

Да, именно оно.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Переход на DDD

Сообщение skynin »

futbolim писал(а): 2019.05.03, 19:53 Бизнес-логика в моделях.
Просто вынести ее из AR моделей.

и не надо тогда никакого DDD.
futbolim писал(а): 2019.05.03, 19:53 Ещё думаю из AR::afterSave и прочих попереносить в Сервисы.
и попутно продублировать минимум треть функционала фреймворка Yii2.
при этом - самостоятельно, без комьюнити.
futbolim писал(а): 2019.05.03, 19:53 Нашёл книгу Эванса
Да, это базовая книга.

Но потребность в DDD должна быть оправдана проектом.

Основной недостаток ActiveRecord в Yii2-Laravel - в AR модели строк БД вписывается бизнес-логика.
Если же она сложная, то размазыается между ARками.

Все что нужно - это вынести ее в одельный слой, или враперы, провайдеры, сервисы, а ARки использовать как продвинутую реализацию Table Data Gateway. Потому что часто и слой не нужен

Если же переходить по серьезному, то чтобы не писать свой Doctrine/Hibernate вокруг Yii2 AR - лучше сразу на него, Doctrine и переходить.
а чтобы не писать следом и вывод данных, что по API, что виджетами, то сразу и переходить на Symfony, где тьма уже всего этого добра и написана.

DDD для Yii2/Laravel это примерно как сооружать свой React/Vue на основе jQuery
Можно конечно.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Переход на DDD

Сообщение anton_z »

Я бы не делал DDD. Сделал бы рефакторинг, покрыл бы тестами, если из нет.
Ответить