Знакомство с 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# не очень
fsharp + ddd
By koteek
fsharp + ddd
- 583