[iOS 8주차] 문제 해결: 코드 구조 개선

DoyleHWorks·2024년 12월 12일
0

https://github.com/SpartaCoding-iOS05-i/PokeContact/pull/14

문제 배경

MVVM-C 아키텍처를 도입하여 개발했는데, 도중에서부터 구조가 잘 이해가 안되고 꼬이게 됨.
그에 따라 여러 가지 문제점이 생겼고, 이들을 파악하여 고치는 것도 쉽지 않게 됨:

  • Add한 Contact가 MainViewController로 돌아갔을 때 보이지 않음 (CoreData에 데이터 저장은 되고 있음)
  • MainViewController에서 Add를 눌렀을 때 이미지가 자동으로 생성되지 않음
  • MainView에서 보여주고 있는 Table에서 image를 "star"가 아니라 데이터에 있는 실제 데이터를 보여줘야됨
  • Generate Avatar 버튼(didTapGenerate)를 눌렀을 때 아래와 같은 오류가 뜸

문제 접근

현재 구조를 간단한 도식을 그리며 면밀하게 살피고, 개선이 필요한 구조를 파악해보았다

파악한 문제점:

  • DetailViewModelDetailViewController 인스턴스는 MainCoordinator가 아닌 DetailCoordinator에서 생성해야 함
  • pokemonFetcherMainCoordinator에서 한 번 더 생성하는 게 아니라 AppCoordinator에서 생성한 걸 의존성 주입으로 가져오는 게 낫겠음

문제 해결

구조 개선 후 새로 그린 도식이다.
ImageLoader 는 원래 있던 기능이지만 파일을 따로 분리하였고,
Coordinator, PokemonResponse, ContactCell, RoundImageView는 원래 있던 파일이지만 도식에 추가하였다:

구조를 개선하면서 중복되는 코드를 크게 줄일 수 있었고, 자연스럽게 버그의 원인도 드러나서 쉽게 해결할 수 있었다.

profile
Reciprocity lies in knowing enough

0개의 댓글