Вариант второй. Nullable включен. Теперь мы точно знаем, что метод возвращает строго SomeModel и без вариантов. Проверка на null не нужна. При этом и внутри метода GetSomeModel null вернуть уже не получится - компилятор будет ругаться.
Вот вы пишите про БД. Мы точно знаем, что наша моделька есть в БД и делаем метод с соответствующим контрактом, указывая, что моделька никогда не будет null. Но случается всякое. И по ошибке могут ее удалить, посчитав не актуальной. Мне кажется, что нельзя на 100% полагаться на данные, которые приходят из вне по отношению к выполняемому коду. Может, конечно, за уши притягиваю ситуацию.
Может, я что-то не до конца понимаю, и мне кто-нибудь подскажет верное решение.
Как это все выглядит - откуда-то прилетает переменная, которая содержит null, хотя не должна. Компилятор проверяет, что тут потенциально может быть NRE, и ругается. Мы делаем проверку на null и что дальше? Выкидывает Argument Null Exception (если в нашу либу прилетел null в качестве аргумента), или какое исключение, если чужая либа вернула null из вызова?
Ну так, таким образом, в методе - конечном потребителе переменной и так проверю ее на null и выкину соответствующее исключение.
Согласен с комментарием в этой ветке, что это иллюзия безопасности. Все равно нужно бдить по полной программе.
И ещё момент на счёт чужих либ. Разве нельзя в конкретном месте выставить #nullable disable, а потом включить обратно, если этот функционал включен для всего проекта? По-моему можно.
Вот вы пишите про БД. Мы точно знаем, что наша моделька есть в БД и делаем метод с соответствующим контрактом, указывая, что моделька никогда не будет null. Но случается всякое. И по ошибке могут ее удалить, посчитав не актуальной. Мне кажется, что нельзя на 100% полагаться на данные, которые приходят из вне по отношению к выполняемому коду. Может, конечно, за уши притягиваю ситуацию.
Может, я что-то не до конца понимаю, и мне кто-нибудь подскажет верное решение.
Как это все выглядит - откуда-то прилетает переменная, которая содержит null, хотя не должна. Компилятор проверяет, что тут потенциально может быть NRE, и ругается. Мы делаем проверку на null и что дальше? Выкидывает Argument Null Exception (если в нашу либу прилетел null в качестве аргумента), или какое исключение, если чужая либа вернула null из вызова?
Ну так, таким образом, в методе - конечном потребителе переменной и так проверю ее на null и выкину соответствующее исключение.
Согласен с комментарием в этой ветке, что это иллюзия безопасности. Все равно нужно бдить по полной программе.
И ещё момент на счёт чужих либ. Разве нельзя в конкретном месте выставить #nullable disable, а потом включить обратно, если этот функционал включен для всего проекта? По-моему можно.
и так и не загружается.
Иллюстрации на месте. Не формул, но у меня их нет сегодня и в других постах.