CJ온스타일 Android 개발자가 홈 탭 개편 프로젝트에서 레거시 코드에 클린아키텍처를 도입하면서 Mapper 패턴을 핵심 해결책으로 활용한 경험을 다룬다. 다양한 상품 유형 파싱 로직 분리, 목 데이터 테스트 환경, 디버깅 효율화까지 구체적 사례를 공유한다.
핵심 포인트- 상품 유형별 파싱 로직을 Adapter/Fragment에서 분리해 타입별 Mapper 클래스로 캡슐화
- 타입별 Mapper(ItemTypeAMapper, ItemTypeBMapper 등) 구조로 프레젠테이션·도메인 레이어 분리 명확화
- Mapper 구조가 특정 상품 유형을 선택적으로 주석 처리하거나 디버그 버전으로 교체 가능한 목 데이터 환경 제공
- 기존 코드와의 호환성은 상속 기반 오버라이드로 유지하면서 신기능에만 새 패턴 적용
- 특정 상품 유형만 토글해 집중 테스트 가능, 팀 개발 속도 향상
상세 정리- 홈 탭 개편 시 다양한 상품 유형이 각기 다른 파싱 로직을 필요로 해 Adapter 코드가 복잡해지는 문제
- 클린아키텍처 도입 핵심: 데이터 변환(Mapping) 책임을 비즈니스 로직에서 분리
- ItemTypeAMapper, ItemTypeBMapper 등 타입별 Mapper 클래스가 각 상품 유형의 파싱을 단독 책임
- 목 데이터 환경: 특정 Mapper를 주석 처리하거나 디버그 버전으로 교체해 JSON 파일 전체를 수정하지 않고 부분 테스트 가능
- 기존 레거시 코드는 삭제하지 않고 상속으로 유지하면서 신규 개편 영역에만 새 패턴 적용해 리스크 최소화
- Mapper 패턴 도입 후 특정 상품 유형 버그 재현 시 해당 Mapper만 격리해 빠른 디버깅 가능
- 레거시 코드베이스에서 클린아키텍처를 전면 재작성 없이 점진적으로 도입하는 실용적 접근 제시
왜 읽나레거시 Android 코드에 클린아키텍처를 한 번에 재작성하지 않고 Mapper 패턴 중심으로 점진적으로 도입하려는 Android 개발자에게 실용적 시작점을 제공한다.