Мимо Проходящий
нулябельность не такая страшная проблема как её рисует Дядя-как-его-там. На проде это по факту вылазит редко очень, и не из-за недостаточного контроля типов, а в основном из-за различных косяков при разработке/согласовании бизнес требований/тестировании/отладки/куа и т.п.
Ну и нулябельность пофиксить относительно легко, а вот искать по вссему коду блокировки - та ещё радость.
Типичный кейс на сишарпе - обновляеь все зависимости/дотнеты до последней версии - и всё нахер ломается потому, что в каком нибудь сраном драйвере бд какая нибудь инструкция становится синхронной и блокирует, а должна быть асинхронной, пишешь дебильный форк
> нулябельность не такая страшная проблема как её рисует Дядя-как-его-там. Н
У меня до сих пор наллреф это самый частый непокрытый эксепш в коде. Или вот на прошлой неделе нулл пролез в базу там где нельзя и поставил раком всю акку, пришлось руками журналы персистент актороы чистить и рекаверить. Не, я рили считаю что это дохера важный кейс
> Типичный кейс на сишарпе - обновляеь все зависимости/дотнеты до последней версии - и всё нахер ломается потому, что в каком нибудь сраном драйвере бд какая нибудь инструкция становится синхронной и блокирует, а должна быть асинхронной, пишешь дебильный форк
Печальная история, потому что в реальности с норм либой такое произойти не может. Ну просто потому что сигнатура асинхронного запуска Task RunAsync()
а синхронного - void Run
. Поменять первое на второе так чтобы оно незаметно скомпилилось - невозможно. ЕДинственное что приходит в голову что в либе было написать async void Foo
а потом асинк убрали - но тут уже как бы клиника и язык не при чем