Переход на DDD

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

Переход на DDD

Сообщение futbolim » 2019.05.03, 19:53

Приветствую. Подскажите, как плавно переходить к 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
Сообщения: 2048
Зарегистрирован: 2012.07.08, 19:28

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

Сообщение futbolim » 2019.05.03, 23:05

Тема больше не актуальна. Нашёл книгу Эванса. По введению понятно, что это именно то, что нужно. Спасибо!

Аватара пользователя
SiZE
Сообщения: 2688
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

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

Сообщение SiZE » 2019.05.04, 10:28

Да, именно оно.
в поиске работы

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

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

Сообщение skynin » 2019.05.04, 13:39

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
Сообщения: 378
Зарегистрирован: 2017.01.15, 15:01

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

Сообщение anton_z » 2019.05.04, 14:24

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

Ответить