Vladimir
да даже если либу, поставил требование .net standard 3.0 и все)
Bonart
Да хоть что ты пишешь. Всегда будет море кода, который на твои наллы класть хотел. А система типов НЕ препятствует.
Vladimir
ну если они 100% стандартной либы покроют и ты будешь юзать только либы .net standard 3.0
Vladimir
то все будет ок)
Bonart
Не будет. Это как с питоном 3 в лучшем случае
Анна
Не, если язык не препятствует, то кто-то обязательно будет так писать
Bonart
Т.е. проблема не в самих not nullable типах, а в том, что для рантайма они идентичны с nullable
Bonart
И это эпик фейл
Vladimir
ну в фшарпе же тоже так, но более-менее привыкли
Bonart
А нормально сделать не?
Vladimir
видимо нормально и с обратной совместимостью не выходит)
Bonart
видимо нормально и с обратной совместимостью не выходит)
Не захотели. Смотри - делаешь обертку NotNull<T>. С неявной конвертацией в T и нулевым оверхедом. Это уже сейчас спокойно делаешь. И потом сыпешь сахару в розлин, что string это теперь NotNull<string>. И ВСЕ блин.
Vladimir
ну вот был у тебя код string s = null, как это будет работать на новой версии?
Bonart
Атрибутиками посыпаешь легаси, чтобы string могло неявно конвертиться в NotNull<string> когда там null нет по построению.
Vladislav
Плюсы просочились
Bonart
Я лично с #nullable enable выпал
Это наименьшее из пиздеца
Vladimir
Атрибутиками посыпаешь легаси, чтобы string могло неявно конвертиться в NotNull<string> когда там null нет по построению.
т.е. ты предлагаешь чтобы в языке было string а в рантайме или string или NotNull<string> на усмотрение компилятора?
Bonart
т.е. ты предлагаешь чтобы в языке было string а в рантайме или string или NotNull<string> на усмотрение компилятора?
Я предлагаю, чтобы в языке было string и string? В рантайме NotNull<string> и string. А на усмотрения компилятора - неявная конвертация второго в первое, там, где статический анализ говорит что null'а не будет.
Bonart
вот это видел?
Видел. И в чем проблема?
Vladimir
старый код не может взять и считать что string это теперь NotNull<string>
Bonart
Именно. СТАРОМУ коду это и не надо.
Vladimir
о_О
Vladimir
у меня есть проект сейчас в котором есть такая строчка
Vladimir
получается я не смогу апгрейднуться на 8.0?
Bonart
Смотри - старый код опирается на нуллабельность всего ссылочного
Bonart
Ввод НЕнуллабельности обратную совместимость по исходникам ломает в любом случае. Не надо иллюзий.
Vladimir
сейчас ничего не ломается, только варнинги будут
Vladimir
=) видишь, ты все-таки хочешь обратную совместимость сломать
Bonart
=) видишь, ты все-таки хочешь обратную совместимость сломать
Прочитай, на что я жаловался :) Плохо не то, что обратная совместимость того. Плохо то, что тип, который not-null во время компиляции ни хрена не notnull в рантайме
Vladimir
да, и чтобы пофиксить это предложил сломать обратную совместимость)
Vladislav
не понял коммент =(
Прикол с типами только для компилятора уже есть для типов значений
Vladislav
И все работает
Bonart
да, и чтобы пофиксить это предложил сломать обратную совместимость)
Твою же налево. Обратная совместимость с вводом ненуллабельности ломается в любом случае, включая вариант C#8
Bonart
Прикол с типами только для компилятора уже есть для типов значений
Они не только для компилятора если что. Они и в рантайме отличаются от старых типов. Там только имена полей кастомные.
Vladimir
Прикол с типами только для компилятора уже есть для типов значений
да, я там имел ввиду что один тип который видит юзер должен 1к1 мапиться на рантаймовый
Igor
Лучше бы сломали нафиг, но например нет кор 3.0 можно было отключить где-нибудь, например в App.config, а в нет кор 5.0 уже нельзя
Bonart
да не ломается же? если не считать варнинги
Варнинги не считают только совсем зеленые или глупые.
Ayrat
Я потерял суть вашего спора
Ayrat
По-моему вы про одно и то же. Но это не точно
Vladimir
Варнинги не считают только совсем зеленые или глупые.
я сегодня решил заапдейтить проект на 8.0, чтобы пофиксить все варнинги нужно два месяца, а релизы нужно каждую неделю делать, с варнингами я просто живу дальше
Ayrat
Обмазывай атрибутами свой код)
Bonart
Я потерял суть вашего спора
Нет. Народ не догоняет, что я считаю костылем, когда тип NotNull для компилятора и очень даже null в рантайме
Ayrat
Но чот атрибуты там сложнее теорката
Bonart
Обмазывай атрибутами свой код)
Говном блядь. Причем не старый, а новый
Ayrat
То есть фича добавляет кучу бойлерплейта
x
Но чот атрибуты там сложнее теорката
да. Сложность получили, а монад не получили
Bonart
Надеюсь им там уже хуев в панамку накидали
Bonart
Андерс, вернись, мы все просрали!
Vasily
Ну я прочитал до конца
Vasily
Скажу честно
Bonart
не надо!
Хейлсберга не надо? Еретик!
Vasily
Фича направлена на job security
Vasily
И унижение рядовых гребцов
x
Хейлсберга не надо? Еретик!
да пребудет с вами Сайм
Bonart
Я бы сказал на тотальное унижение не только рядовых
Vasily
Многие будут тешить самолюбие на собеседованиях
Vasily
Путем навешивания на метод кучи атрибутов
Vasily
И вопрос типа как поведет себя код?
Bonart
да пребудет с вами Сайм
Сайм хорош, но Хейлсберг умеет делать из говна конфету. Typescript почти даже не пахнет, хотя внутри там....
Vasily
В общем, долбоебам раздолье
Bonart
В общем, долбоебам раздолье
Худшая разновидность ява-стайл
Vasily
А работать, как обычно, будет некому
Vasily
С другой стороны
Bonart
А работать, как обычно, будет некому
Дык значит увеличим ценник
Vasily
Возможно, народ начнет уходить в фшарп
Bonart
Хоть какая-то польза
Ilya
Не начнёт. Это так не работает. Проще не использовать эту фичу. Жили с NRE и дальше будем.