tgoop.com/emacsway_log/1142
Last Update:
Пишу своими руками сейчас два проекта. Один - по всем канонам DDD на малознакомом мне стэке. Другой - по документации Django Framework. Я уже говорил об этом.
По прошествии двух месяцев могу поделиться впечатлениями.
1. Скорость разработки на Django, все-таки быстрее, но не слишком существенно.
Это потому, что Django во всю использует рефлексию для минимизации количества кода.
Известно два способа решения этой проблемы - "reflective program" и "code generation", подробнее см. в главе "Metadata Mapping" книги "Patterns of Enterprise Application Architecture" by M.Fowler.
Таким образом, чтоб парировать превосходство Django Framework, нужно делать генератор кода для DDD-проектов. Тогда скорость разработки даже существенно превзойдет скорость на Django.
Основные потери времени на Django составляет борьба с Framework в каждом нетипичном кейсе. Это от 30% до 50% времени разработки.
В свою очередь, проект по DDD требует время на исследовательскую работу по способу структурирования кода.
2. Django накладывает более строгие требования к способности выдерживать когнитивные нагрузки. Нередко приходится погружаться в потроха Фреймворка, понимать его реализацию (а Django сегодня не такая уж и простая, как была 10 лет тому назад). Обзор и инспекция её плагинов так же требует погружения в детали их реализации. Встречались случаи, например, грубого нарушения потокобезопасности. Так что Django накладывает более строгие требования к квалификации исполнителя, кто бы не убеждал в обратном.
Однако, проект с чистого листа по DDD требует невероятно глубоких познаний и обширную работу с литературой. Хорошо то, что эти затраты однократны. Если под рукой уже есть сформированный качественный образец (а лучше - генератор кода), то справится любой мидл.
3. Моральное удовлетворение больше приносит разработка по DDD. Это чувство можно сравнить с выплаченным кредитом - теперь ты не заложник обстоятельств. Чувство свободы и независимости.
Если вы смотрели сериал "Is TDD Dead?", то заметили, что претензии David Heinemeier Hansson касались не столько TDD, сколько принципов Clean Architecture.
В принципе, для заказной разработки вполне пригодна разработка по Framework без всяких там DDD или Clean Architecture, и зачастую она способна дать существенный прирост темпов разработки.
Особняком возникает вопрос сопровождения таких продуктов, т.к. во фреймворках время от времени обнаруживают уязвимости, а поддержка публичного интерфейса всегда ограничена по своей длительности.
BY emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Share with your friend now:
tgoop.com/emacsway_log/1142