loading...

Discussion on: 10 practices for writing readable code

Collapse
shayd16 profile image
Shayne Darren

Just a quick question, lets assume we have a method such as getUser(email,password). The return type is User. Assuming that there is no user matching that email and password(a very possible situation), what would you return if not null, to indicate there is no user?

Collapse
gonedark profile image
Jason McCreary Author

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 Author

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

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

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