When designing a null safe piece of code, what's the better approach?
F# and Scala has Options type that encapsulates null check, but we also have static code analysis tools like code contracts, findbugs.
To me static analysis seems a little cleaner, so what is the reason for Option/Maybe? In particular, what makes it better in preventing NullPointerExceptions/NullReferenceExceptions?