티스토리 뷰

Back-end

[SpringBoot] 코드 리팩토링

jhkang-dev 2018. 9. 18. 19:37

[코드 리팩토링]




[객체에게 일을 많이 시키자]


보통 로그인시에 비밀번호를 비교할 때는 다음과 같이 get 메서드를 사용하여 비밀번호를 반환함.

if(!password.equals(user.getPassword())){
System.out.println("Login fail");
return "redirect:/users/loginForm";
}

하지만 이렇게 하면 비밀번호를 가져오고 비교하는 작업 2개를 해야한다.

이 작업을 한 번에 하기 위해서는 User 객체에 matchPassword() 라는 메서드를 만든다.

-- User 클래스 --

public boolean matchPassword(String newPassword){
if(newPassword==null){
return false;
}

return newPassword.equals(password);

}

-- Controller --

if(!user.matchPassword(password)){
System.out.println("Login fail");
return "redirect:/users/loginForm";
}

이렇게 메서드를 만들어 비교를 한 번에 할 수 있다.


[자주 쓰는 코드는 따로 클래스를 만들자]

Session을 생성할 때 세션의 이름을 지정해 주어야 한다.

Session의 이름을 지정해주게 되면, 나중에 수정하기가 어려워진다. 그래서 따로 final 변수로 지정하여 사용한다.


public static final String USER_SESSION_KEY = "sessionedUser";


로그인 여부 확인, 세션 가져오는 메서드도 자주 사용하는 메서드들이다. 따로 만들어서 재사용할 수 있도록 한다.

public static boolean isLoginUser(HttpSession session){
Object sessionedUser=session.getAttribute(USER_SESSION_KEY);
if(sessionedUser==null){
return false;
}
return true;
}


public static User getUserFromSession(HttpSession session){
if(!isLoginUser(session)){
return null;
}
return (User)session.getAttribute(USER_SESSION_KEY);
}


위의 코드들을 따로 HttpSessionUtils라는 클래스로 만들어서 필요할 때마다 가져다 쓴다.



이번 시간에는 기초적인 코드 리팩토링을 하는 방법에 대해 다루어 보았습니다.

코드 리팩토링을 하지 않으면 복잡도가 점점 높아지기 때문에 지속적으로 코드를 리팩토링 해주면서 개발하는 것을 권장합니다.



댓글