I don't agree that a custom NullObject is mostly preferable. I would use a NullObject in cases where the object has a reasonable 'null value' like a salery would be 0. But in many cases the behavior in the null case is context dependent. For example if a customer email is absent do we then use the empty "" email, filter it out, or send it to the company email