Cooper's devlog

5-6. QuestionController 중복 코드 제거 리팩토링 본문

Programming/Spring-boot

5-6. QuestionController 중복 코드 제거 리팩토링

cooper_dev 2020. 7. 23. 02:51

1. 강의 링크

https://www.youtube.com/watch?v=g-nsT3NRK2o&list=PLqaSEyuwXkSppQAjwjXZgKkjWbFoUdNXC&index=45

 


2. 학습 목표

QuestionController 중복코드 제거 및 리팩토링

 

  • try/catch를 이용한 Exception
  • validation(Result) class를 이용한 예외 처리

 


3. 과정

httpSessionUtils.isLoginUser(session) 및 isSameWriter 중복 코드 리팩토링 (update, updateForm, delete)

 

1. try/catch를 이용한 Exception

(1)QuestionController

1_ hasPermission

update method

반복되는 코드를 최소화하기 위해 hasPermission 메소드

  • if(!HttpSessionUtils.isLoginUser(session) : 로그인 여부에 따른 예외처리
  • if(!question.isSameWriter(loginUser) : 작성자id - loginId를 비교  
  • 모든 예외 통과 시, true 리턴

2_ hasPermission을 try/catch문에 추가하여 예외처리 구현

-updateForm

updateForm method

-update

update method

-delete

delete method

 

 

2. result 객체를 생성해서 작성하기

(1) Result

Result

  • ok : 유효성 검상 통과 method(static)
  • fail : 유효성 검사 실패 method & errorMessage 전달
  • Result(boolean valid, String errorMessage) : 실패 시, 결과 주입을 위한 생성자

 

 

(2)QuestionController

1_valid

valid method

  • 예외처리에 따른 메세지를 Result 객체에 주입
  •  if(!HttpSessionUtils.isLoginUser(session) : 로그인 여부 확인 예외처리
  • if(!question.isSameWriter(loginUser) : 작성자 일치여부 확인 예외처리

 

 

 

 

2_updateForm, update, delete

  • 유효성 검사 결과를 result 객체에 주입하여 로직 진행
  • if문 예외 처리한 후, 로직 진행 방식(else문을 최대한 사용하지 않는 방식으로 진행)

-updateForm

updateForm method

-update

update method

-delete

delete method

 

 


 

Comments