본문 바로가기

Project/MovieClip

🔥 MVVM + Combine을 통한 검색기능 구현 1편 패턴 비교

🎯 UISearchController를 활용한 검색 화면 아키텍처 선택: MVVM vs. MVC

 

MVC 패턴 vs. MVVM 패턴 비교

1️⃣ MVC (Model-View-Controller)

장점:

  • 비교적 간단하고 빠르게 개발 가능
  • UIKit의 기본 패턴이므로 익숙함

단점:

  • ViewController에 로직이 집중됨 → 거대한 ViewController(= Massive View Controller) 문제가 발생
  • 테스트하기 어렵고, 유지보수가 어려워짐

💡 적합한 경우:

  • 검색 기능이 간단하고, 데이터 처리 로직이 복잡하지 않을 때
  • 검색 결과를 바로 네트워크에서 받아와서 UI에 반영하는 경우

2️⃣ MVVM (Model-View-ViewModel)

장점:

  • ViewController의 역할을 줄이고, 로직을 ViewModel에서 처리 → 코드가 더 깔끔해짐
  • 테스트가 쉬워짐 → ViewModel 단위 테스트 가능
  • 데이터 바인딩을 활용하여 UI 업데이트를 자동화 가능 (RxSwift, Combine 사용 가능)

단점:

  • 초기 설정이 복잡할 수 있음
  • 작은 프로젝트에서는 오버헤드 발생 가능

💡 적합한 경우:

  • 검색 결과를 가공하여 필터링, 정렬 등의 추가 로직이 필요한 경우
  • UI 업데이트를 더 효율적으로 관리하고 싶을 때

 

🚀 결론: MVVM 패턴이 적합

검색 기능을 구현할 때는 MVVM 패턴이 더 적합
이유는 다음과 같습니다:

  1. 검색어 입력 → 네트워크 요청 → UI 업데이트 과정이 분리되면 관리하기 편리함
  2. 검색 결과를 가공하는 로직(필터, 정렬 등)이 ViewModel에 집중되므로 ViewController가 깔끔해짐
  3. 테스트가 용이하여 검색 결과 API가 바뀌어도 쉽게 대응 가능