Что делает мой код DDD (управляемый доменом дизайн) квалифицированный?

Я плохо знаком с DDD и думаю об использовании этого метода проектирования в моем проекте.

Однако то, что ударяет меня о DDD, является этим, насколько основной идея. В отличие от других методов проектирования, таких как MVC и TDD, это не делает, кажется, содержит любые новаторские идеи.

Например, я уверен, что у некоторых из Вас будет то же чувство, что идея корня агрегируется, и репозитории не являются ничем нового, потому что то, когда Вы, писало веб-приложения MVC, у Вас должен быть один единственный объект шаблона (т.е. корневой агрегат), которые содержат другие незначительные объекты (т.е. оцените объекты и объекты) в образцовом слое для отправки данных в представление со строгим контролем типов.

Мне единственная новая идея в DDD, вероятно,

  • "Умные" объекты (т.е. у Вас, как предполагается, есть бизнес-правила на корне, агрегируется),
  • Разделение между объектом значения, базируйтесь агрегат и объекты.

Кто-либо может сказать мне, если я пропустил что-нибудь здесь? Если это - все, которое существует к DDD, если я обновляю одно из своего существующего приложения MVC с вышеупомянутыми 2 новыми идеями, я могу утверждать, что это - TDD, MVC и DDD applcation?

7
задан Patrick Karcher 25 May 2010 в 19:18
поделиться

2 ответа

Короткий ответ заключается в том, что не то, как выглядит ваш код, квалифицирует его как проект DDD, а то, как вы пришли к этому коду. Теперь о длинной версии...

Вы абсолютно правы, что в методах кодирования DDD нет ничего очень революционного, но вы, похоже, немного не в курсе своего вопроса. Распространенная ошибка, которую многие разработчики совершают с DDD, заключается в том, что они слишком много внимания уделяют методам кодирования, игнорируя некоторые из более фундаментальных концепций DDD. По своей сути DDD — это практика итеративной разработки модели в тесном сотрудничестве между разработчиками и экспертами в области. Вы можете закодировать все сервисы, сущности и объекты ценностей, которые вы хотите, но если вы не вовлекаете экспертов в этот процесс или не улучшаете модель в итерациях, то, честно говоря, вы не практикуете DDD. Даже с точки зрения кодирования многие рассматривают концепции совокупных корней, ограниченных контекстов и анти-коррупционные слои должны быть более ценными инструментами, чем базовые шаблоны.

Вы не одиноки в том, как вы воспринимаете DDD. Я обнаружил, что почти все разработчики проходят стадию DDD, когда они пытаются реализовать примеры приложений с использованием сущностей, ценностных объектов и сервисов, игнорируя при этом все другие практики, которые являются фундаментальными для DDD. DDD — это процесс, предназначенный для обработки сложной бизнес-логики, поэтому оценка его достоинств на примере приложения, разработанного в выходные дни, не дает вам лучшего, что может предложить DDD. Я призываю вас продолжать глубже смотреть на DDD, поскольку я считаю его нераздеяемым инструментом, но никогда не забывайте, что это гораздо больше, чем язык шаблонов.

14
ответ дан 6 December 2019 в 08:42
поделиться

DDD на самом деле не контрольный список - это методология.

В дополнение к ответу Stefans, я бы предложил следующее (в порядке важности):

  • Вездесущий язык - Использует ли ваш код использует те же имена/термины, что и бизнес? Используют ли ваши объекты домена те же имена, что и бизнес?
  • Поведение - Большинство поведения/логики связано непосредственно с объектами домена, или у вас много тупых DTO?
  • Ограниченные контексты - Вы четко определили зоны ответственности и разделение обязанностей?
  • Агрегаты - Определили ли вы агрегаты на основе корневых объектов и стратегии блокировки для обеспечения бизнес-инвариантов?
  • Репозитории - Все ли данные доступ/запрос осуществляется через Репозитории, или у вас есть SQL код в других классах?
  • Domain Services - Есть ли у вас доменные службы для бизнес-логики, которая естественным образом не
  • Спецификации - Есть ли у вас бизнес-правила, красиво завернутые в спецификации?
  • Спецификации запросов - Есть ли у вас заранее подготовленные запросы/фильтры красиво завернуты в спецификации запросов?

Затем есть все остальные вещи!

Я думаю, что большинство практиков DDD хотели бы сказать:

"Я работаю с экспертами домена, чтобы понять их потребности, и пишу системы, которые (а) соответствуют бизнес-терминам и процессам, (б) помогают другим разработчикам понять бизнес-сферу, и (в) могут адаптироваться к изменяющимся бизнес-требованиям. "

Надеюсь, это поможет!

7
ответ дан 6 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: