Знакомство с DDD
Хотелось писать сложную бизнес-логику простым способом
Жертвуем производительностью ради простоты понимания
Код становится понятнее, но бизнес-логику по прежнему неудобно писать
Сложности C# + DDD
Value object
Почему не struct
VO — design concept
Struct — technical implementation
Нет наследования
Нужно перегружать операторы сравнения
Bounded context
Ubiquitous language
Склад
Продукт
Перевозка
Логистика
Трекинг
...
Choice
Domain model
States & transitions
Почему именно такой дизайн
Каждому состоянию соответствует свой собственный набор данных
Все состояния явно задекларированы
Все переходы между состояниями явно задекларированы
Всё это
заставляет
учитывать все возможные ситуации
Когда F# не оч
Иммутабельность
выделение памяти на каждую модификацию
код CLR не оптимизирован
Суровый внешний мир и его исключения
БД
Сеть
Если интересно
http://fsharpforfunandprofit.com/ddd/
https://www.pluralsight.com/courses/domain-driven-design-in-practice
Видео о том как больно писать DDD на C#
https://www.youtube.com/watch?v=a4fD2Nl7R0A
Когда F# не очень
Made with Slides.com