Does the code avoid catching Exception (as opposed to more specific exception types)?
Does the code avoid throwing an explicit Exception object?
Does the code avoid having empty catch blocks?
Do methods check for null / empty arguments using Asserts in the Service Layer?
public void identifyUnadjustableCharges(List
Assert.notNull(chargesDetails,""Charges detail cannot be null."");
Assert.notEmpty(chargesDetails,""Charges detail cannot be empty."");"
Does the code use logging instead of System.out.println() or Throwable.printStackTrace()?
Are log types (fatal, error, warn, info, debug and trace) used appropriately?
Is the amount of commenting appropriate?
A good rule of thumb is a ratio of comments to code of about 20-25%.
Commenting just for the sake of commenting should be avoided.
Are all date comments in the format YYYY/MM/DD?
Are all class members commented except for getters/setters?
Do test cases use meaningful Input combinations?
Include boundary conditions and invalid conditions. Null inputs has to be tested
Do test cases adequately cover functionality?
Test should exercise most of branches.80% code coverage is a good rule-of-thumb.
Is every method tested?
Simple getters and setters can be exempted.
Are all test cases independent of one another?
Is all test code under test folder?