Можно ли возвращать null из функции?
Ну вот, раз nullable типы есть, их и используем. Будет заставлять думать при обращении к объекту.
P.S. Мест, где имеет смысл использовать null-объекты на самом деле мало. Редко когда логичный null-объект сделать получается. В нём же смысл не в том, чтоб его сравнивать с результатом функции, а в том чтобы его можно было просто получить и использовать
ну уж точно не для отдельного человека. Скажем так - что можно написать в правилах оформления кода для команды. И главное, объяснить почему мы хотим так делать.
В шарпе я бы прописал использование nullable типов. Они не мешают вернуть null. Но бьют по рукам при дереференсе. Почему... Потому что обращение к null самая частая ошибка. И мы хотим её ограничить. Потому что уже сам создатель null сказал что говно придумал. Но Ололёшеньки же умнее этого старпёра,он им не указ! :)
Лично мне больше нравится Optional/Maybe, чем nullable типы. Они... сильнее бьют по рукам :) Сильнее бросаются в глаза, что мол, ахтунг! тут может быть неопределённое значение!