static Employee create(int type) { switch (type) { case ENGINEER: return Employee.createEngineer(); case SALESMAN: return new Salesman(); case MANAGER: return new Manager(); default: throw new IllegalArgumentException("Incorrect type code value"); } } I compile and test after changing each leg, until I've replaced them all:
static Employee create(int type) { switch (type) { case ENGINEER: return Employee.createEngineer(); case SALESMAN: return Employee.createSalesman(); case MANAGER: return Employee.createManager(); default: throw new IllegalArgumentException("Incorrect type code value"); } } Now I move on to the callers of the old create method. I change code such as
Employee kent = Employee.create(ENGINEER) to
Employee kent = Employee.createEngineer() Once I've done that for all the callers of create, I can remove the create method. I may also be able to get rid of the constants.
Preserve Whole Object You are getting several values from an object and passing these values as parameters in a method call. Send the whole object instead.
int low = daysTempRange().getLow();
232