마스크 알라미

프로젝트/마스크 알라미

4년 전 코드 리팩토링하기 (4) - Repository 패턴

Repository 패턴 적용 기존에는 MainService가 외부 서버에서 데이터를 받아와 MainActivity에게 전달해줬었다. MainService안에서 Retrofit를 활용해 한 번에 데이터를 불러왔지만 Repository 패턴을 적용하여 데이터 로드 과정을 계층화하려고 한다. UI 레이어의 MapViewModel이 데이터 레이어의 MaskAlarmiRepository에게 Store 리스트를 요청했다. 그 순간 데이터 레이어에서는 어떤 일이 생기는 걸까? 데이터 레이어에서는 UI 레이어가 요청한 데이터만 잘 전달하면 된다. UI는 데이터의 출처가 어디인지 몰라도 된다. 레포지토리는 외부 저장소인지 내부 저장소인지를 선택해 저장소에서 데이터를 요청한다. 저장소에서 가져온 데이터를 UI 레이어에게..

프로젝트/마스크 알라미

4년 전 코드 리팩토링하기 (3) - MVVM 패턴

MapViewModel 추가 : 비즈니스 로직 분리 이전 코드에서는 MainActivity에서 네트워크 호출을 하는 MainService 객체를 생성해 앱에 필요한 데이터를 불러와 마커를 생성했다. 데이터를 불러오는 로직을 ViewModel이 수행하게끔 수정했다. ViewModel은 데이터를 가져오고 앱의 상태 데이터들을 보유하고 관리한다. 그리고 UI는 ViewModel의 앱 상태에 의해 UI 요소를 변경한다. 즉, ViewModel은 UI와 데이터간의 상호작용을 담당하는 역할이다. Store 리스트 데이터를 저장하고 관리할 수 있는 ViewModel 클래스를 추가해줬다. Jetpack의 ViewModel를 상속받는 MapViewModel 클래스 타입을 정의해줬다. private const val RA..

프로젝트/마스크 알라미

4년 전 코드 리팩토링하기 (2) - 아키텍처 재설계

4년 전 코드의 문제점 '마스크 알라미' 앱에서 제일 중요한 로직은 아래와 같다. "판매처(Store) 데이터를 외부에서 제공받아 재고량, 위경도 값을 추출해 마커로 만든 뒤 지도에 렌더링한다" 이를 위해 앱에서 해줘야 할 일은 다음과 같다. 서버(외부 리소스)에 데이터 요청하기 요청이 성공했는지 실패했는지 구분 데이터를 응답받으면 필요한 값을 추출해 마커로 만들기 생성된 마커들을 맵 UI에 렌더링하기 앱에서 이러한 행위들을 하기 위해 나는 어떻게 구조를 설계하고 코드를 작성했을까? 더보기 MainActivity public class MainActivity extends BaseActivity implements MainActivityView { private ArrayList mM..

프로젝트/마스크 알라미

4년 전 코드 리팩토링하기 (1)

"리팩토링 왜 하는데?" 개발을 하면서 항상 만들기에 급급하여 기술을 적용하면서도 '왜 이 기술을 적용하는지'에 대해 깊게 생각하거나 정리한 적이 없었다. 4년 전 작성한 코드를 리팩토링하는 가장 큰 이유는 내가 무엇을 모르는지 파악하기 위해서다. 기술들을 하나씩 적용해보며 이전과 어떤 차이가 있는지 비교해보고 그 과정과 개념에 대해 정리해보려고 한다. '마스크 알라미' 프로젝트 2020년 코로나 사태로 사람들이 마스크를 구하지 못해 불편을 겪는 것을 해소하고자 진행했던 프로젝트이다. 공적 마스크 오픈 API를 통해 마스크 재고량, 판매처를 알려주는 위치 기반의 서비스이다. 주요 기능 사용자는 특정 위치에서 반경 1km 이내의 판매처 정보를 확인한다. 이 요구 사항을 중심으로 아래의 핵심 기능들을 구현하..

minux.
'마스크 알라미' 태그의 글 목록