Это хорошо, когда исправляешь
фатальный недостаток. Либо когда заказчик очень четко представляет себе предметную область, и может написать качественное ТЗ. Тогда можно более-менее грамотно спроектировать приложение в целом (заказчиком тут может выступать и сам программист), оперируя сущностями.
Но если этих условий нет, программа обречена на рефакторинг сразу же, как только ты нарисовал первый квадратик в UML. И часто, после этого рефакторинга, от первоначальной архитектуры остается шишь да маленько. И никакое DDD тут не поможет. Потому что у заказчиков часто семь пятниц на неделе.
Вот пример. Да, согласен. Если посмотреть исходники, а не диаграмы, то может у Маркуса там полный кавардак и отсутствие декомпозиции. Но скажите, чем помог Борису его ООП образ мышления?
Его первоначальный проект был легко расширяем? Отнюдь. На втором же этапе ему пришлось полностью переписать базовый класс. Легче рефакторится? Тоже нет - стоит посмтреть на итог. У Маркуса в итоге все работает, а Борис заблудился в собственном коде. Облегчило поддержку? Сравним первые релизы с последними и подсчитаем количество изменений и потраченное время.
Минус Маркуса, как я говорил, в плохой декомпозиции. И нарушении принципа единой ответственности. Но это следствие его не совсем верного подхода к разработке. Можно было не пихать все в один-два метода, а вынести функционал в библиотеки (не обязательно это должны быть классы). При этом не строить взаимодействий разных сущностей, таких как газ, печка, рецепт и так далее, а просто описав их действия. Процесс разработки и поддержки не очень то этим бы усложнился, особенно в отличие от Борисовой концепции.
Если проектируется конкретный (допустим трековый) велосипед, то да. Колеса, цепь, руль. Но если в процессе разрабоки, когда уже все спроектировано, вдруг выясняется, что велосипед должен быть водным, придется выкинуть колеса и добавить пантоны и винт. И скорее всего на 90% изменить компановку.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.