6주차부터 마지막 8주차까지 총 3주간의 프로젝트가 진행되었다. 6,7주차, 8주차와 수료 후기로 나누어 글을 작성하였다.
Reactive Programming
리액티브 프로그래밍은 데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트 되는 방식
RxJava
Observerable 클래스
데이터의 변화가 발생하는 데이터 소스
subscribe() 함수
Observable을 구독. Observable은 subscribe() 함수를 호출해야 비로소 변화한 데이터를 구독자에게 발행함. subscribe함수는 이러한 변화한 데이터를 수신하여 할 행동을 정의함.
Single 클래스
데이터를 무한하게 발행할 수 있는 Observable 클래스와 달리 오직 1개의 데이터만 발행하도록 한정. 결과가 유일한 서버 API를 호출할 때 사용 가능. 데이터 하나가 발행과 동시에 종료
Maybe 클래스
최대 데이터 하나를 가질 수 있지만 데이터 발행 없이 바로 데이터 발생을 완료할 수도 있음.
Cold, Hot
Cold Observable은 구독하면 준비된 데이터를 처음부터 발행, Hot Observable은 구독한 시점부터 Observable에서 발행한 값을 받음. 데이터를 처음부터 모두 수신할 것으로 보장할 수는 없음.
Subject 클래스
Cold Observable을 Hot Observable로 바꿔줌
subscribeOn()
Observable에서 구독자가 subscribe() 함수를 호출했을 때 데이터 흐름을 발행하는 스레드를 지정. 한번 호출했을 때 결정한 스레드를 고정하며 이후에는 다시 호출해도 스레드가 바뀌지 않는다.
observeOn()
처리된 결과를 구족자에게 전달하는 스레드를 지정. 여러번 호출할 수 있으며 호출되면 그다음부터 동작하는 스레드를 바꿀 수 있다.
참고: RxJava 프로그래밍(유동환,박정준 , 한빛미디어)
Room
Room 지속성 라이브러리는 SQLite를 완벽히 활용하면서 원활한 데이터베이스 액세스가 가능하도록 SQLite에 추상화 계층을 제공한다.
Database class
데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 액세스 포인트 역할을 합니다.
Entity
앱 데이터베이스의 테이블을 나타냅니다.
DAO
앱이 데이터베이스의 데이터를 쿼리, 업데이트, 삽입, 삭제하는 데 사용할 수 있는 메서드를 제공합니다.
(https://developer.android.com/training/data-storage/room?hl=ko#setup)
Room Database의 인스턴스는 싱글톤 디자인 패턴을 따라야 한다. 여러 인스턴스에서 액세스하는 경우 각 인스턴스는 리소스를 많이 소비하기 때문에 싱글톤 형태로 인스턴스를 관리해야 한다.
DAO의 경우 다양한 타입을 지정할 수 있다.
Paging 라이브러리와 함께 PagingSource 객체를 반환하여 페이징 처리를 할 수 있다.
비동기 쿼리 실행을 제공하는 여러 다양한 프레임워크와 통합하여 사용할 수 있으며, Flow, Single, Flowable, Observable, LiveData 등의 반환 타입을 제공한다.
참고 : 비동기 DAO 쿼리 작성 | Android 개발자 | Android Developers
TestCode
TestCode를 작성하여 테스트를 할 수 있다. 크게 Unit 테스트와 Integration 테스트로 나눌 수 있다. Unit 테스트는 개별적인 단위의 기능이 올바르게 작동하는지 테스트를 하고, Integration 테스트는 2개 이상의 단위가 올바르게 통합되어 작동하는지 테스트를 한다. 또한 JVM 로컬 머신을 통한 테스트인 Local Test와 실제 기기나 에뮬레이터로 테스트를 하는 Instrumented Test로 나눌 수 있다.
Android Project에서 main 디렉토리와 함께 androidTest와 test 디렉토리를 확인할 수 있는데 androidTest는 실제 기기에서 수행하는 테스트를 포함하고, test는 local 머신에서 수행하는 테스트를 포함한다.
프로젝트를 진행하면서 기능 구현을 끝내고선 대부분 정상적인 작동이 보장된 상태에서 Test 코드를 작성을 하였는데 Test 코드 작성의 이점을 제대로 알기 위해서는Test 코드를 작성하면서 기능 구현을 하는게 더 좋았지 않았을까 하는 아쉬움이 남았다.
'활동 > 우아한테크캠프5기' 카테고리의 다른 글
우아한 테크캠프 8주차 및 수료 (2) | 2022.09.03 |
---|---|
우아한 테크캠프 4,5주차 - 2 (0) | 2022.08.08 |
우아한 테크캠프 4,5주차 - 1 (0) | 2022.08.06 |
우아한 테크캠프 3주차 - 2 (0) | 2022.07.26 |
우아한 테크캠프 3주차 - 1 (0) | 2022.07.23 |
댓글