Подтвердить что ты не робот

Является ли DDD пустой тратой времени?

Googling "Какими приложениями подходит DDD?" дал мне следующий ответ:

Вероятно, 95% всех программных приложений относятся к категории "не так хорошо для использования DDD". (см. статья)

Так что же такое суета?!?

Приложение, над которым я работаю, в основном ориентировано на данные, но содержит некоторые бизнес-логику и правила, которые будут применяться. Будет ли трата времени начать применять методы DDD? Мне лучше использовать более обычный уровень доступа к данным, модель POCOs и бизнес-логики? Или сказать это по-другому - какая звуковая альтернатива DDD?

4b9b3361

Ответ 1

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

DDD не о написании кода, это не 10-шаговый процесс "под ключ", чтобы получить отличное программное обеспечение, это об этом процессе перед тем, как писать код, о том, как получить представление о том, в чем проблема, что/кто участвует в том, какие информационные потоки и как выглядят эти элементы, как они соотносятся друг с другом и т.д. На самом деле, самая важная часть DDD - это создание языка, который делает возможным общение между экспертами домена и разработчиками без неправильного толкования. Об этом говорит "Вездесущий язык". Это фактически делает весь процесс ПЕРЕД кодом, написанным процессом, который мало что можно угадать, все ясно и прямо. (что цель).

Проблема с 'как DDD работает на практике' и 'может ли кто-нибудь дать мне пример того, как я пишу код с DDD?' и тому подобное действительно исходит из того, что люди, задающие такие вопросы, сосредоточены на написании кода, но понятия не имеют, ПОЧЕМУ они пишут этот код, а не другой код. I.o.w.: Если вы понимаете, что DDD об обнаружении ЧТО вы должны писать как функциональность и ПОЧЕМУ, все встает на свои места. КАК вы пишете этот код, что до вас. Но как сказано: это не самая большая проблема, поскольку вы уже знаете, что вы должны писать и почему.

Ответ 2

Вот очень похожий вопрос: Вы разрешаете веб-уровню напрямую обращаться к DAL?

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

Ответ 3

DDD - это программное обеспечение, которое будет поддерживаться некоторое время. Для меня это означает, что он должен выражать идеи, которые будут меняться в домене. Конечно, простое приложение может быть идеальным для короткого времени доставки и короткого времени выполнения. Однако, если вам нужно вырастить программное обеспечение, то принципы DDD очень помогут. DDD может быть тяжелым, но как только вы получаете представление о вездесущем языке и проблемах разделения, все начинает становиться легким.

Ответ 4

Если вы прочтете статью немного больше, вы увидите следующее:

Для 5% приложений, где DDD хорошо подходит, это очень хорошо подходит. В этих ситуациях DDD поможет вы взламываете очень крепкий орех. Здесь DDD может быть серебряной пулей для этого оборотня, что ваш менеджер просто указал на ваш стол.

Вот почему это суету.

Ответ 5

  • Поскольку ваше приложение в основном ориентировано на данные, возможно, ваша архитектура может быть в основном обычной.

  • Для аспектов, где у вас больше логики и потенциальных объектов домена или значений, возможно, вы могли бы использовать некоторые из идей DDD для организации кода.

  • В целом, "звуковая альтернатива" заключается в том, чтобы максимально упростить вещи, использовать концепции DDD, где это полезно, и не излишне усложнять ситуацию, как советует статья.

Теперь я запускаю аналогичный проект, это сочетание манипуляций с данными и более логических/управляемых алгоритмом областей. Я бы тоже хотел взять части DDD, которые принесут пользу проекту, но не пытаться заставить его в районах, где это может быть контрпродуктивным.

Ответ 6

вы знаете, иногда 5% зарабатывают больше, чем все остальные 95%, - поэтому DDD существует.

для конкретной сложной большой системы.

Ответ 7

Извините, но если бы DDD был только способом мышления, как говорит Франс Бума, тогда он не рекомендовал бы такие вещи, как Persistence Notorance. Это увольняет других как разработчиков, не являющихся разработчиками.

PI, для которого DDD имеет как минимум смещение, является архитектурным выбором. Это уже не способ мышления; это уже что-то, что вам доставляет, в большинстве случаев слишком неопределенные предупреждения могут быть полезны: "не подходит для всего".

Но решение идти по пути PI или нет - это само по себе вызов, и вы не можете назвать имена кем-то ( "кодер" ), если он чувствует себя неловко об этом.

Возьмите ERP-пакет со всем содержимым интерфейса доступа к MS Access: сетки с текущими итогами, автоматическое обновление столбцов и беспроблемная прокрутка на 100 000 записей. Очевидно, что подход DDD подходит для размышлений о том, как обойти это приложение. Но в течение многих лет я никогда никого не видел - ни в книгах, ни в Интернете, несмотря на доказательства, подтверждающие объяснения, не говоря уже о примерах жизненного кода, о том, как PI может справиться с этой <сильной > вездесущей ситуацией для тех, кто хочет доставить < сильные > приложения для коммерческих приложений и пользовательские впечатления.

Не хочу быть религиозным в этом. Сторонники DDD и DAL, как правило, слишком религиозны и могут отгонять тех, кто был укушен один раз, но которые были или были непредвзятыми. Многие просто хотят противостоять реальным переживаниям (т.е. ДУМАЮТ), и не получают доступ только к кошкам, автомобилям и основным элементам Order/OrdersItems (т.е. К плохому CODE) для поддержки проповеди.