Define your method is such way that, any IDE or Static Code Analyzer can sense the billion-dollar mistake, aka NullPointerException while writing the code to call the method.
Here are some best practices while defining a new Java method.
- Method should have clear documentation with
- Purpose of the method
- Parameters of the method – Mark the parameter with @javax.annotation.Nonnull if null is not expected
- Return type of the method – Mark the return type with @javax.annotation.Nullable if it can be null
/**
* This method filters product from the productList by supplied productId and type and return the same.
* If no match found then returns null.
* @param productId a non-null product ID for which the filter is requested
* @param type a non-null type value for which the filter is requested
* @return Product if found the match by productId and type else return null
*/
public @Nullable Product filterProductByIdAndType(@Nonnull BigInteger productId, @Nonnull Character type) { Product product = null; for (Product eachProduct : productList) { if (productId.equals(eachProduct.getId()) && type.equals(eachProduct.getType())) { product = eachProduct; break; } } return product; }
How it helps while calling the method?
- It warns that the argument might be null while the method is expecting a Nonnull parameter. In this case productId may be null because the assignment is conditional.
- It also warns about the NPE because there is a possibility of getting Null from the method. In this case the method can return null as per the method documentation.
Let’s follow these best practices to avoid nightmares.
No comments:
Post a Comment