Попытаюсь кратко изложить содержание книги для тех, кто хочет познакомиться с DDD не тратя много времени.
Книга состоит из 4 частей и 26 глав. В книге есть несколько ключевых идей и концепций, к которым постоянно идет отсылка
под разными углами.
Перечислю основные, далее будут ссылки на все части книги где будет приведено краткое содержание глав.
Основные концепции
Предметно ориентированное проектирование - это философия проектирования программного обеспечения (ПО).
Это набор приемов и хороших практик которые позволят получить поддерживаемый продукт с наименьшей сложностью на выходе.
Это не набор шаблонов и не фреймворк.
Предметная область это деятельность для которой создаётся ПО (ecom, банковская деятельность, медицина).
Смысловое ядро (core domain) - ключевая часть предметной области, то, что служит причиной создания софта,
а не его покупки, главное на чем должно быть сосредоточено внимание команды.
Ограниченный контекст (bounded context) - устанавливает границы между моделями в коде. Проектирование модели
ведется в рамках контекста.
Единый язык (ubiquitous language) - единая терминология которая используется бизнесом и разработчиками для
коммуникации и описание сущностей в коде. Позволяет сократить количество абстракций и упростить коммуникацию.
Стратегические шаблоны - подходы и методики к проектированию, не связанные с организацией кода: сотрудничество,
единый язык, ограниченные контексты.
Тактические шаблоны DDD - это приемы позволяющие создавать эффективные модели внутри контекста.
По сути сюда относятся паттерны проектирования описанные у Фаулера.
Идеи
DDD подходит не всегда и это дорого - для получения выгоды нужно, чтобы система имела сложное смысловое ядро.
Если система не отличается сложностью и не подвержена частым изменениям, то DDD тут не место.
Стратегические шаблоны важнее тактических - код не является узким местом, гораздо важнее
изучать и осваивать предметную область вдали от клавиатуры.
Модель существует в границах своего контекста - важно защитить целостность каждой модели,
и обозначить границы ответственности в коде. Это делается путем связывания модели с ограниченным контекстом.
Краткий обзор глав
Многие из них, на мой взгляд, представляют пережевывание уже упомянутых концепций,
а некоторые содержат новую информацию.