Что такое предметно-ориентированный дизайн?[закрыто]
-
01-07-2019 - |
Вопрос
Итак, я получил этот вопрос от одного из разработчиков в моей команде:Что такое предметно-ориентированный дизайн?Я, конечно, мог бы указать на книгу Эванса, но действительно ли это ответ?
Как бы вы в нескольких предложениях объяснили DDD младшим инженерам-программистам в вашей команде?
Решение
Я бы сказал, что эта практика способствует концентрации ваших усилий на «пространстве проблем», а не на «пространстве решений».Разработка нового решения (дизайна) путем изучения и действительного изучения и понимания предметной области.Одним из приемов (взятым из XP) будет написание историй, происходящих в проблемной области.Из них вы можете определить варианты использования и объекты для вашего дизайна.Они «появляются» и сообщают вам, что должно быть в решении и как им нужно будет взаимодействовать друг с другом.
Другие советы
У InfoQ есть бесплатная электронная книга:
Быстрое проектирование на основе предметной области
Это хорошее чтение с множеством примеров.
В процессе открытия «домена» вы формируете общий язык, который понимают как разработчики, так и все остальные участники проекта.
Модель предметной области и ее «жаргон» вполне заметны в исходном коде готового продукта.Это по крайней мере мой опыт
Важной частью DDD является так называемый вездесущий язык;то естьговорить на одном языке с бизнес-экспертами.И сделайте свой код/архитектуру так, чтобы он отражал этот язык, чтобы избежать проблем с импедансом.
Попытка понять, что представляет собой программное обеспечение, которое вы пишете, и отразить это понимание в модели.
Проектирование, управляемое предметной областью, заключается в управлении сложностью приложения в модели предметной области, в которой его легче всего выделить.
Это очень сложно описать в нескольких предложениях, но я бы порекомендовал ИнфоQ Книга как хорошее введение.Я также слышал о многих людях, создавших книжный клуб с книгой Эванса DDD, что очень помогло в ее понимании.
Для меня это следующий уровень ООД/ООП, где инкапсуляция касается проблемного пространства, описанного и понятного пользователями, а не столько технической реализации.