Pokud je v dokumentaci, že nějaká funkce null nevrací, pak ji z té funkce nejspíš nedostanu. Ale jisté to není. Jisté je, že jestli ji náhodou dostanu, tak mě chytne naprosto nepřipraveného.
Takze radsej riadite svoje rozhodovanie default hodnotami, ako by ste mali vediet, ze nedosla hodnota? Taketo pocinanie sposobilo kopec drahych chyb. Napriklad vyskomery, co ukazovali priemernu vysku, ked boli pokazene. Alebo default booleany co spustili procesy, ked nemali. Alebo napr. sonda nasa, co zistila prebytok ozonu, miesto ozonovej diery lebo mala nastavenu default hodnotu na vysoku, a senzory nic nenamerali, lebo vrstva bola pod ich rozlisovaciu schopnosti.
Jsou jazyky, které umožňují říct "v téhle proměnné je číslo nebo null" a "v téhle proměnné je číslo". Takže například zavolám funkci "zjistiVýšku", pak zavolám funkci "otestujJestliNeníNull", která mi převede proměnnou z typu "může obsahovat null" na "vždycky obsahuje číslo" (a když obsahuje null, tak třeba vyvolá výjimku) a tuhle proměnnou následně používám. A když ji pak třeba pošlu do nějaké funkce "mámVysunoutPodvozek", tak ta funkce ví, že prostě dostane číslo a že to nikdy nebude null. Protože proměnná, která může obsahovat null je jiného typu a překladač na tom zařve.
A když pak píšeš v takovém jazyku, tak to sice trvá malinko déle (ne zas tak moc), ale když už to konečně napíšeš a přeložíš, tak máš produkční kód, který má velmi dobře ošetřené krajní případy - a to tak, že hodně věcí není potřeba testovat, protože se nemůžou stát. A stav, kdy po několika hodinách psaní kódu to konečně přeložíš, spustíš - a ono to funguje, je poměrně běžná záležitost - a když to nefunguje, tak je to spíš výjimka.
A tohle třeba Java neumí.