@Nullable itp .wydawały mi się kiedyś dobrym pomysłem, ale w praniu jakoś nie działa. Najwygodniej jest przyjąć, że nie sprawdzam nulli doputy coś nie jest jasno określone jako @Nullable
(@NotNull
to w ogóle nonsens). Tyle, że w praktyce potem nigdy nie mam pewności czy IDE było dobrze skonfigurowane, sonar rzeczywiście prawidłowo podpięty, itp. Za często się to rozjeżdża, żeby spokojnie zaufać, a mi się nie chce regularnie sprawdzać.
W moich projektach zwracanie null z jakiejkolwiek funkji uznaję za sabotaż. Jak ktoś nie lubi Optionala to niech chociaż wali exceptionem wtedy.
Technicznie to nie miałem dużych problemów z przekonywaniem ludzi do optionali, ale raz musiałem pokazać taką prezentację:
https://www.slideshare.net/JarekRatajski/fighting-null-with-memes
Tam gdzies pod koniec jest pokazana przewaga Optionala nad drabinką ifów.
Kotlin robi to całkiem elegancko, bo w zasadzie ma w język wbudowanego optionala, jak chcemy mieć coś nullable to trzeba jasno zadeklarować i bedzie to sprawdzane przez kompilator.
Inaczej nie ma nulli. (Chyba, że wywołujemy stary kod z javy, wtedy null może się przedrzeć).