В целом, NULL вполне соответствует реальному миру, если есть канализационный люк - он может быть разных цветов и моделей, но если его нет - его просто нет.
И если упасть в колодец, то виноват не NULL-люк, а упавший, или укравший.

В императивных языках для безопасности придумали null-aware операторы. Если язык поддерживает их - этого достаточно.

А то, что некоторые пытаются притащить из функциональщины всякие монады Maybe (Optional) и так далее - ну так это же функциональщики, люди с декларативным мышлением.