While investigating a routine bug fix today, I came across some code that can only be described as a buried cry for help …
Why would a developer declare parameters as nullable DateTimes and then immediately write guard clauses to prevent nulls from being accepted.
If you don’t want to support nulls, use a regular date time.
There are two lessons to learn here, one specific and one general.
The specific lesson: Use the right type for each parameter - use the most liberal type that makes sense (for example,
IEnumerable<T> instead of
IList<T> unless you need indexed access), but no more liberal (don’t use
unless you’re willing to accept nulls).
The general lesson: Don’t make code more complex than it needs to be - do things the simplest way that makes sense. Being a developer is hard enough, we shouldn’t go out of our way to make it harder.