[Jed] Step1 - 로그인 화면 구현, 네트워크 통신 구현 관련 리팩토링 #16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
작업 내용
학습 키워드
고민과 해결
이번 리팩토링에서는 직전 피드백에서 언급해주신
로그인 뷰에서 입력값의 유효성을 판단하는 부분을 컨트롤러로 이동
하는 것과Http요청을 처리하는 메소드에서 요청 생성 및 응답수신, 디코딩 등을 모두 수행하는 것을 분리
하는 부분을 수정했습니다.1. LoginView에서 입력값 검증하는 로직 분리
2. HttpRequestHandler 내부의 요청 처리 메소드의 여러 책임 분산
요청 객체(URLRequest)의 생성
,응답에 대한 처리
,응답 데이터 디코딩
의 동작을 모두 수행하고 있었습니다.2-1. 요청 객체 생성 책임 분리
요청 객체(URLRequest)의 생성
의 경우 generateURLRequest 라는 메소드를 호출하여, 이것이 리턴하는 객체를 sendRequest에서 사용하도록 했습니다.2-2. 오류 발생에 대한 처리 분리
응답에 대한 처리
부분에서, 기존에 말씀하신 오류 발생 시 로그를 찍던 부분을 모두 제거했습니다.handleResponse
라는 메소드를 선언한 후 내부의 switch문에서 .success, .failrue에 따라 각기 다른 로직을 처리하도록 했습니다.HttpResponseHandleable
이라는 프로토콜을 선언하여, LoginViewController가 이를 채택하도록 하고 sendRequest() 호출 시에 추상 타입으로 뷰컨트롤러의 참조를 넘겨서, 이후 handleResponse 호출 시에 프로토콜을 채택하면서 구현한 메소드(handleSuccess, handleFailrue)을 호출하도록 했습니다.