DEV Community

Discussion on: 10 practices for writing readable code

Collapse
 
gonedark profile image
Jason McCreary

Depends. Generally, returning null for objects is common practice. Specifically, I'd want to know what a method like getUser(email, password) does? It seems like it has more to do with login in which case, there's a lot that could be improved for readability's sake (naming, returns, symmetry)

Collapse
 
shayd16 profile image
Shayne Darren

It was just a example, more generally what if the method searches for something in a database. What should it return if it can't find the required object?

Thread Thread
 
gonedark profile image
Jason McCreary

Something that could possibly better represent emptiness. For example, many ORMs return an empty collection when a query yields no results.

Thread Thread
 
shayd16 profile image
Shayne Darren • Edited

I see. So basically, this is something that needs to be thought about from the design level up, and not a simple change that can be done to a method(in most cases at least). I am familiar with the practice of returning an empty list rather than null. Definitely reduces the number of null checks that have to be done in other parts of the code.

Thread Thread
 
acostalima profile image
André Costa Lima • Edited

Methods that return collections should never return null, ever. At the very least, an empty collection is returned. For plain objects, employ the Null Object Pattern. In case of Java, Optional class is what you should be looking for. 🙂

Thread Thread
 
shayd16 profile image
Shayne Darren

This is exactly what I was looking for, how to handle plain objects. Thank you, Andre.
Will definitely be implementing these where possible.

Thread Thread
 
ashleyjsheridan profile image
Ashley Sheridan

There is the null object pattern for this situation, which returns something that shouldn't break your existing code and only requires minimal changes to your methods which return objects.

en.m.wikipedia.org/wiki/Null_objec...

Thread Thread
 
acostalima profile image
André Costa Lima

👌💪