Pull to refresh
0
0
Константин Беззубов @bizonwar

User

Send message

Вариант второй. Nullable включен. Теперь мы точно знаем, что метод возвращает строго SomeModel и без вариантов. Проверка на null не нужна. При этом и внутри метода GetSomeModel null вернуть уже не получится - компилятор будет ругаться.

Вот вы пишите про БД. Мы точно знаем, что наша моделька есть в БД и делаем метод с соответствующим контрактом, указывая, что моделька никогда не будет null. Но случается всякое. И по ошибке могут ее удалить, посчитав не актуальной. Мне кажется, что нельзя на 100% полагаться на данные, которые приходят из вне по отношению к выполняемому коду. Может, конечно, за уши притягиваю ситуацию.

Может, я что-то не до конца понимаю, и мне кто-нибудь подскажет верное решение.

Как это все выглядит - откуда-то прилетает переменная, которая содержит null, хотя не должна. Компилятор проверяет, что тут потенциально может быть NRE, и ругается. Мы делаем проверку на null и что дальше? Выкидывает Argument Null Exception (если в нашу либу прилетел null в качестве аргумента), или какое исключение, если чужая либа вернула null из вызова?

Ну так, таким образом, в методе - конечном потребителе переменной и так проверю ее на null и выкину соответствующее исключение.

Согласен с комментарием в этой ветке, что это иллюзия безопасности. Все равно нужно бдить по полной программе.

И ещё момент на счёт чужих либ. Разве нельзя в конкретном месте выставить #nullable disable, а потом включить обратно, если этот функционал включен для всего проекта? По-моему можно.

Не показывалось уравнение. Подключился к другой сети, и все стало хорошо. Видимо сетевики наши что-то заблокировали.
Супер пост! Спасибо.
Иллюстрации на месте. Не формул, но у меня их нет сегодня и в других постах.
Да и в десктопном хроме уж точно не с сентября 2017.

Information

Rating
Does not participate
Location
Балашиха, Москва и Московская обл., Россия
Date of birth
Registered
Activity