Lv.5 위 제시된 기능 이외 '내'가 정의한 문제와 해결 과정
-
[문제 인식 및 정의]
기존 TodoService의 getTodos()와 getTodo()의 return 부분을 확인해보면 TodoResponse를 반환할 때 중복되는 부분이 상당히 많은 코드임을 확인할 수 있다. 확인해보니 TodoResponse 내의 UserResponse의 작성 방식만 다를 뿐, 구현되는 결과는 완전히 같은 것을 확인할 수 있었다. 똑같은 기능을 하는 코드를 다르게 작성하는 것은 가독성과 안전성을 매우 해치는 일이기 때문에 해당 코드를 리팩토링하기로 결정했다. -
[해결방안]
코드 내용 파악을 위해 비슷한 코드 내의 다른 부분을 중점적으로 확인해보았다. 확인 결과 getTodos()의 경우 모든 내용을 todo...로 시작하며, getTodo()의 경우 todo.getUser()를 사용해 user 변수를 생성하고, 해당 변수를 사용해 UserResponse를 작성하는 것을 확인했다. 결과적으로 기능 상 정확히 동일하나 다른 방법으로 작성되어 있음을 확인해 코드를 통일한 후, 별개의 메소드로 만들어 가독성을 올리기로 결정했다.해당 문제 해결을 위해 기존의 return 부분의 공통 코드를 buildResponse라는 메소드를 만들어 공통 코드를 몰아넣었다. 해당 메소드가 불필요한 동작을 하지 않도록 선언 시 todo만을 받고, 기존의 getTodo()처럼 todo에서 user를 따로 추출하지 않고 직접적으로 사용해 코드가 불필요하게 길어지는 것을 막았다. 이후 기존의 getTodos()와 getTodo()를 buildResponse를 사용하도록 수정했다.
-
[해결 완료]
*[수정 전]
*[수정 후]
이전 코드에 비해 각 메소드를 확인하기 쉬워졌으며, 새로 작성한 공통메소드 역시 한번에 어떤 기능을 하는 메소드인지 확인할 수 있는 이름을 붙였다.
Spring Advanced 실습 과제
Lv.1 ~ Lv.5까지의 과제를 구현했으며,
Lv.6의 경우 테스트 중입니다.
초기 구성 및 1-1 구현
Lv.1-2 구현
Lv.1-3 구현
Lv.2 구현
Lv.3-1 구현
Lv.3-2 1번 케이스 구현
Lv.3-2 2번 케이스 구현
Lv.3-2 3번 케이스 구현
Lv.4 구현
Lv.5 구현
README, 주석 업데이트 및 Lv.6진행