Avoiding IsNothing()
A few days ago I posted about my surprise on finding out what IsNothing() really does. After reviewing more code I found out another reason you should avoid this: It accepts value types! Obviously, since IsNothing() is a function that accepts an 'object', you can pass anything you want to it. If it's a value type, .NET will box it up into an object and pass it to IsNothing -- which will always return false on a boxed value!
This really is a discipline issue and you shouldn't be checking for null (Nothing) value types. The VB.NET compiler will check the "Is Nothing" style syntax and won't compile if you attempt to do an "Is Nothing" on a value type. But the IsNothing() function compiles without complaints.
We're removing all occurrences of "IsNothing()" and replacing them with "Is Nothing".