Vasily
У меня завтра самолёт во Вьетнам
Doge
NullableAttribute and C# 8 | Jon Skeet's coding blog https://codeblog.jonskeet.uk/2019/02/10/nullableattribute-and-c-8/
Ну так это внутреннее представление нулябельности компилятором. Никто не обещал, что результат будет красиво выглядеть.
Диёр
Интересно как выглядит представление нулябельности компилятором котлин
Ilya
А они там проверками в рантайме обмазываются и киданием эксепшенов, если что.
Диёр
Но там же без !! компилятор ругнется если с nullable объектом без проверки пытаешься что-нибудь сделать
Диана
Всегда мечтала работать с конструкциями вида "string?" 🤦‍♀
Диёр
В пхп есть ?string
Vasily
Почитал статью и понял, что я слишком стар для этого
Vasily
Напомнило ту сцену из мультфильма про поросёнка Фунтика, где крутили поднос с кофе
Vasily
https://youtu.be/sk2mhqMS9Z4
Vasily
Теперь тот
Dr. Friedrich
так точно не забудешь
А в чём проблема? Вроде всё понятно.
Ayrat
А в чём проблема? Вроде всё понятно.
Я уверен, что проблема не в тебе!
Vasily
Я там чуть выше кинул гифку
Vasily
В чем проблема
Vasily
Это называется overengineering
Vasily
Причем не совсем ясны резоны
Doge
Причем не совсем ясны резоны
Резоны в том, чтобы сохранить информацию о нуллябельности в скомпилированном коде.
Doge
С учётом того, что в рантайме ненулябельных реф типов не существует как таковых.
Doge
Вариант не самый красивый, но, повторюсь, никто не обещал, что результат работы компилятора таким будет.
Vasily
В теории, если нужно уйти от нулабельности и сохранить совместимость, имело бы смысл просто ввести compiler directives на принудительное включение
Vasily
Вот это вот nullable enable
Vasily
Тут же еще предлагаются какие-то криповатые промежуточные варианты
Vasily
Которые хз как будут работать, если честно
Vasily
С моей точки зрения, нулабельность или есть, или ее нет
Vasily
А если в проекте где-то есть, а где-то нет, вполне может и синергия возникнуть
Vasily
Плюс еще есть хреновые практики возврата null, если ничего не найдено
Anonymous
Плюс еще есть хреновые практики возврата null, если ничего не найдено
Василий, есть папиры с прямым доказательством беды этой практики? Устал уже просить не возвращать нулы
Anonymous
Кроме той, что про ошибку на миллион долларов
Anonymous
А разве это неочевидно?
Для меня очевидно, для большого процента сообщества - нет
Anonymous
Их не устраивает объяснение, что нулл ломает программный контракт и является элементом почти всех множеств
Vasily
Василий, есть папиры с прямым доказательством беды этой практики? Устал уже просить не возвращать нулы
Ну папирами я не интересуюсь, возможно, что они в природе есть. Проблема в том, что с возвращенным результатом мы обычно что-то хотим сделать. В теории в c# проблема решается паттерном tryparse,find whatever, когда нам возвращается дополнительный признак, нашли мы что-то или нет. Не знаю, возвращается ли сейчас тапл или приходится через out параметры. Второй подход может заключаться в том, что на любой результат поиска мы возвращаем список, но тут тоже палка о двух концах, т.к. с одной стороны это убирает проблемы с возвратом null, с другой стороны приходится перестраивать мышление в случаях, когда возвращается только один результат. Третий подход - самописный Option/Result, но про такие вещи в проде лучше не заикаться, конечно.
Doge
В теории, если нужно уйти от нулабельности и сохранить совместимость, имело бы смысл просто ввести compiler directives на принудительное включение
Так здесь не в совместимости даже дело, а в том, чтобы можно было информацию о нуллябельности восстановить в рантайме. Например, для каких-нибудь библиотек, которые используют рефлексию. Эти аттрибуты именно для них в том числе и оставляются.
Anonymous
Трайкетч это признание своей беспомощности
Anonymous
Это крик "Я НЕ ЗНАЮ, КАК ЭТО БУДЕТ РАБОТАТЬ"
Vasily
А про tryfind
Vasily
Или tryparse
Doge
Ну ты же понимаешь, как они будут использоваться в итоге?
Люди руками всё равно эти аттрибуты выставлять не будут. Это чисто выхплоп компилятора. Использоваться будут теми же json десериализаторами, например.
Vasily
У меня другое представление о галерных гребцах
Doge
Ты очень хорошего мнения о людях
Люди ленивые черты и вряд ли будут руками такую хрень писать.
Vasily
Они честны и прекраснодушны, но их благими намерениями вымощена дорога в ад
Vasily
Люди ленивые черты и вряд ли будут руками такую хрень писать.
Ну вот ты бы сильно удивился, какую хрень люди умудряются писать в проде
Vasily
А потом надувать щеки
Vasily
Я краем глаза видел абсолютно ебанутый сервис на месиве из тасков
Vasily
И это на полном серьезе поддерживалось и развивалось
Vasily
Но очень медленно
Vasily
Почему? Я вот на двух работах завёз резалт и брат не умер
Вопрос в том, кто их будет поддерживать, когда тебя не станет
Anonymous
Но очень медленно
Посмотрел на трвйпарс паттерн, выглядит как напыщенный нуллчек, опшен кажется более типобезопасныс
Anonymous
Вопрос в том, кто их будет поддерживать, когда тебя не станет
Как насчёт выгнать бездельников из профессии?
Anonymous
Вопрос в том, кто их будет поддерживать, когда тебя не станет
Ну с которой я ушёл - начальник, мы с ним на пару завезли. На текущей - пока я еще не ушёл :)
Vasily
Как насчёт выгнать бездельников из профессии?
Ну тут решает рыночек. Вот есть продукт, который писали условные гребцы среднего уровня. Потом его продолжают развивать такие же гребцы. Менеджменту на качество кода насрать, у них kpi к фичам привязан. Бизнесу тоже насрать. В такой ситуации нанимать дорогих специалистов никто не будет, т.к. собака лает - караван идет
Vasily
Я на прошлой работе пытался хотя бы paket затащить
Vasily
Ибо было совсем как-то неприятно с версиями пакетов
Vasily
Все ж тоже руками-ногами отбиваются
Anonymous
Одна проблема - специалистов дорогих сложно написать потому что их попросту на всех не хватает
Vasily
Бизнесу на это похуй
Anonymous
Ты пока молод и наивен
Не спорю, так и есть
Vasily
На TTM?
Ну вот на этот тайпсейф и прочее. Его вполне устраивает среднее качество, если работает
Vasily
Спроси вон у @omgszer
Vasily
Хотя у него пришлось переписывать, потому что не работало
Vasily
А вот если бы работало, то все бы боялись трогать
Anonymous
А вот если бы работало, то все бы боялись трогать
Так потому и боятся, что не понятно как работает
Vasily
Так потому и боятся, что не понятно как работает
Ты не учитываешь еще момента, что самое ценное - это не код, а данные
Vasily
И вот за данные бизнес трясется
Vasily
Поэтому код, который может их гипотетически сломать, воспринимается очень настороженно
Anonymous
И вот за данные бизнес трясется
Код вообще никому не нужен
Anonymous
Кроме программистов, да и то не всех
Anonymous
Зачастую как раз проблема в том, что данные безобразно хранятся