깔끔한 코드를 추구하는 스프링 사용자라면 검토해라

upgradeLevels() 메서드 코드의 문제점

for 루프 속에 들어있는 if/elseif/else 블록들이 읽기 불편하다.

Boolean changed = null;
if (**user.getLevel() == Level.BASIC** && **user.getLogin() >= 50**) {
  user.setLevel(Level.SILVER);
  changed = true;
} else if (user.getLevel() == Level.SILVER && user.getRecommend() >= 30) {
  user.setLevel(Level.GOLD);
  changed = true;
} else if (user.getLevel() == Level.GOLD) {
  changed = false;
} else {
  changed = false;
}
if (changed) { userDao.update(user); }
  1. user.getLevel() == Level.BASIC
  2. user.getLogin() >= 50
  3. user.setLevel(Level.SILVER);
  4. if (changed) { userDao.update(user); }

두 단계에 걸쳐서 조건을 비교하자.

upgradeLevels() 리팩토링

코드 기본 작업 흐름만 남겨두자.