Besides Tony Hoare's presentation and David West's book mentioned above, I read these publications before writing this post: hasp4 driver setup zip Clean Code by Robert Martin, Code Complete by Steve McConnell, Say "No" to "Null" by John Sonmez, Is returning null bad design? Basically, there are two possible alternatives to NULL. The first one is Null Object design pattern (the best way is to make it a constant public Employee getByName(String name) int id nd(name if (id 0) return BODY ; return Employee(id The second possible alternative is. For example, jcabi-aspects has @Cacheable annotation that caches the value returned by a method: import cheable; public class Department @Cacheable(forever true) public Employee manager return new Employee Jacky Brown I hope this analysis was convincing enough that you will stop NULL -ing your code What. HasNext throw new EmployeeNotFoundException return xt BTW, that is exactly how C STL map:find method is designed. Computer Thinking vs. Object Thinking Statement if (employee null) is understood by someone who knows that an object in Java is a pointer to a data structure and. If we would refactor Map so that its method get will throw an exception if nothing is found, our code will look like this: if (!ntainsKey Jeffrey / first search throw new EmployeeNotFoundException return t Jeffrey / second search Obviously, this is method is twice. At that point, we try to call again or inform our supervisor that we can't reach Jeffrey and complete a bigger transaction. Alternatively, they may let us speak to another person, who is not Jeffrey, but who can help with most of our questions or.