TGViewer
DDDevotion DDDevotion @dddevotion · 4.44K subscribers
Post #256 3.37K

Forwarded from StringConcat - разработка без боли и сожалений

Работая с тактическими паттернами DDD, в очередной раз убеждаешься какой же этот ваш DDD "душный" в хорошем смысле слова. Вот буквально на днях пилили небольшой объект-значение, отражающий количество (при этом количество может быть дробным значением). И в процессе запилки возникли вопросы вида
- Какие могут быть максимальные и минимальные значения?
- Какая должна точность дробной части?
- Как округляется значение при выполнении арифметических операций?
- Какие вообще арифметические операции допустимы, с какими аргументами и в каких диапазонах?
- Как вести себя при переполнении?

И это довольно простой класс, ничего особенного. В обычном случае пишут что-то вроде fun calculate(float: count) и забивают, мы же уделяем столько внимания казалось бы такой незначительной чиселке. И в итоге может показаться, что все это не нужно. Да и вообще тратим больше времени - нужно подумать, написать тесты, etc. Но это не совсем так, ведь мы получаем:
- Снижение когнитивной нагрузки. Мы работаем над небольшим независимым кусочком кода и за счет этого яснее видим граничные случаи.
- Сами тесты получаются проще и шустрее, их дешевле поддерживать. Местами очень хорошо заходит property-тестирование
- Самый главный пункт - мы защищаемся от нелепых багов вида "нам передали отрицательное число в качестве количества, а мы его пропустили, потому что забыли провалидировать. Теперь надо полбазы перетряхнуть на проде, чтобы устранить последствия".
- За счет инкапсуляции упрощается сам код, ведь нам не нужно таскать и копипастить разного рода проверки.

Итого, если количество тестов и растет, то время на их написание (незначительное) компенсируется отсутствием детсадовских багов, а так же более читабельным и поддерживаемым кодом.
  • 👍 34
  • 🔥 5
  • 😁 2
More from @dddevotion
  1. Aug 19, 2026Вижу в индустрии два подхода к внедрению ai разработки. Понятно, что это спектр, но в цело…
  2. Jul 13, 2026Записываем в календарики Когда: завтра, во вторник 16:00 мск Что: стрим Александра Поломод…
  3. Jul 10, 2026Иногда наше бизнес-правило может выглядеть так: if (this.Total > 100) Мы точно знаем, как…
  4. Jul 8, 2026Давно не касался темы инцидентов и постмортемов. SRE Book вышла уже 10 лет назад, и может…
  5. Jun 12, 2026Вышел LeadDev Engineering Leadership Report 2026 Как же быстро ИИ в разработке прошел путь…
  6. Jun 9, 2026Интересный взгляд на агентскую разработку через DDD-призму. А как вы работаете с агентами?…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →