Как правильно работать с исключениями в DDD

image

В рамках недавно прошедшей конференции DotNext 2018 состоялся BoF по Domain Driven Design. На нем был затронут вопрос работы с исключениями, который вызвал жаркий спор, но не получил развернутой дискуссии, поскольку не являлся основной темой.

Также, изучая множество ресурсов, начиная от вопросов на stackoverflow и заканчивая платными курсами по архитектуре, можно наблюдать, что в IT-сообществе сложилось неоднозначное отношение к исключениям и к тому, как их использовать.

Наиболее часто упоминается, что с использованием исключений легко построить поток исполнения, имеющий семантику оператора goto, что плохо сказывается на читабельности кода.

Есть разные мнения о том, стоит ли создавать собственные типы исключений или использовать стандартные, поставляемые в .NET.

Кто-то делает валидацию на исключениях, а кто-то повсеместно использует монаду Result. Справедливо, что Result позволяет по сигнатуре метода понять, возможно ли не только успешное выполнение. Но не менее справедливо, что в императивных языках (к которым относится C#) повсеместное использование Result приводит к плохо читаемому коду, засыпанному конструкциями языка настолько, что с трудом можно разглядеть исходный сценарий.

В данной статье я расскажу о практиках, принятых в нашей команде (если кратко — мы используем все подходы и ни один из них не является догмой).

Речь пойдет об enterprise-приложении, построенном на базе ASP.NET MVC+WebAPI. Приложение построено по луковой архитектуре, общается с базой данных и брокером сообщений. Используется структурированное логирование в ELK-стек и настроен мониторинг при помощи Grafana.
Читать дальше →
Как правильно работать с исключениями в DDD
Source: habrahabr

Пост №3739312

Автор: Robotron3000

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739312″ }, «headline»: «shepherd0821 :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/shepherd0821-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-4872233.jpeg», «height»: 1712, «width»: 1200 }, «datePublished»: «2018-12-03T11:48:18+03:00», «dateModified»: «2018-12-03T11:48:18+03:00», «author»: { «@type»: «Person», «name»: «Robotron3000» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739312
Source: Joyreactor

Пост №3739311

Автор: chonyatsky

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739311″ }, «headline»: «Moonbeard :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Moonbeard-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-4872232.png», «height»: 728, «width»: 750 }, «datePublished»: «2018-12-03T11:48:02+03:00», «dateModified»: «2018-12-03T11:48:02+03:00», «author»: { «@type»: «Person», «name»: «chonyatsky» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739311
Source: Joyreactor

Цитата #453479

xxx: поднять на нем фаервол, не сделав исключение для ssh
yyy: Для этих случаев есть специальная утилита iptables-apply, которая автоматически откатывает настройки iptables через некоторое время, если не подтвердить работоспособность ssh. Для тех, кто пользуется этой утилитой, есть много других более хитрых способов достижения состояния "и убиться головой об стену"
Цитата #453479
Source: bash

[Перевод] О 3D-графике простыми словами

Часть 1. Введение

Привет меня зовут baldurk. Я уже несколько лет работаю программистом графики, поэтому хоть я и не в коем случае не являюсь экспертом, кажется, я уже многое понимаю во всём том, что касается работы с графикой.

Идея этой серии постов уже давно витала где-то на периферии моего сознания, и снова всплыла после прочтения интересной статьи с разбором последней Deus Ex.

Мне кажется, что графика, и в особенности та сложность, какой она достигает в современных играх — это интересная тема. Очень немногим людям любопытно глубоко погружатьcя во все её подробности, но я считаю, что есть темы, которые интересны каждому. Я думаю, что большинству людей, игравших в игры, было любопытно, как получаются те или иные эффекты, или с помощью какой технологии удалось создать такую потрясающую графику в какой-нибудь новой игре.

Есть много составляющих, необходимых для создания даже простой 3D-игры, не говоря уж о таком проекте, как Watch Dogs.

У меня есть только общее представление о том, что нужно рассмотреть в этой статье, но это будет зависеть от того, какие темы вызовут интерес. Тем не менее, основная идея заключается в том, чтобы создать общее описание того, что происходит внутри современной игры, не отпугнув при этом никого из читателей — я буду предполагать, что у вас нет знаний математики и программирования. Если вы знаете разницу между ЦП и графической картой, и отличаете оперативную память от жёсткого диска, то этого будет вполне достаточно, а остальное я объясню.
Читать дальше →
[Перевод] О 3D-графике простыми словами
Source: geektimes

Пост №3739302

Автор: Naro4iTo

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739302″ }, «headline»: «фотокомиксы (comixme ru net, кадры из фильмов, фото комиксы, komixme) :: собакен :: ноги :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%84%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D0%BD%D0%BE%D0%B3%D0%B8-%D1%81%D0%BE%D0%B1%D0%B0%D0%BA%D0%B5%D0%BD-4872220.jpeg», «height»: 1352, «width»: 1218 }, «datePublished»: «2018-12-03T11:32:34+03:00», «dateModified»: «2018-12-03T11:32:34+03:00», «author»: { «@type»: «Person», «name»: «Naro4iTo» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739302
Source: Joyreactor

Цитата #453478

xxx: Как я тарился в чёрную пятницу

Приезжаю в ТЦ. Готовлюсь, что как по телеку, люди все крушат, шмотки отдаются за бесценок. Но народу не так уж и много.
Купил штаны с 5% скидкой. Думаю, опять нагнетают СМИ.

Короче, оказалось, что это был четверг.
Цитата #453478
Source: bash

Пост №3739284

Автор: 8l8i8

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739284″ }, «headline»: «гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки) :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82%D1%8D-4872190.gif», «height»: 400, «width»: 600 }, «datePublished»: «2018-12-03T11:09:12+03:00», «dateModified»: «2018-12-03T11:09:12+03:00», «author»: { «@type»: «Person», «name»: «8l8i8» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739284
Source: Joyreactor

Пост №3739283

Автор: darth_vaderm/

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739283″ }, «headline»: «Новый Год :: кот :: елка :: праздник :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82-%D0%B5%D0%BB%D0%BA%D0%B0-%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9-%D0%93%D0%BE%D0%B4-4872189.gif», «height»: 350, «width»: 280 }, «datePublished»: «2018-12-03T11:09:06+03:00», «dateModified»: «2018-12-03T11:09:06+03:00», «author»: { «@type»: «Person», «name»: «darth_vaderm/» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739283
Source: Joyreactor

Пост №3739276

Автор: anon

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3739276″ }, «headline»: «Anime :: anon :: разное», «image»: { «@type»: «ImageObject», «url»: «http://img10.joyreactor.cc/pics/post/full/anon-Anime-%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%B5-4872178.jpeg», «height»: 720, «width»: 537 }, «datePublished»: «2018-12-03T11:03:28+03:00», «dateModified»: «2018-12-03T11:03:28+03:00», «author»: { «@type»: «Person», «name»: «anon» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3739276
Source: Joyreactor