• Update UI components with NavigationUI

    Toolbar & Navigation drawer

    이번 프로젝트에서 만든 안드로이드 어플리케이션은 여러 개의 액티비티, 그리고 각 액티비티마다 여러 개의 프래그먼트로 구성되어있다. Jetpack이 제공하는 Navigation components는 이와 같이 하나의 메인 액티비티와 다수의 프래그먼트로 구성된 앱을 위해 디자인된 것이라고 알려져 있다. 실제로 이를 사용하며 개발을 하면서 느낄 수 있었던 주된 장점은 이러했다. [Read More]
  • Simplify dependency injection with Dagger2 framework

    Implementing authentication logic through the jwt token

    Dagger2는 자바, 코틀린, 안드로이드에서 사용할 수 있는 compile-time dependency injection framework이다. 외부로부터 필요한 의존성을 주입받으면 테스트하기에 용이할 뿐더러 한 번 생성한 의존성을 재사용할 수 있으며 유지보수성이 뛰어나다. 러닝커브가 상대적으로 낮은 Koin이나 Hilt와 같은 다른 프레임워크도 있지만 이미 많은 앱에서 검증되어 자주 쓰이고 있는 Dagger2를 공부해보고 싶어 이번 프로젝트의 DI 프레임워크로... [Read More]
  • RxJava with Retrofit

    RxJava, Reactive Extensions for the JVM

    코드를 리팩토링하기 전 서버에 http 요청을 하는 Retrofit 통신의 결과를 비동기적으로 받아와(enqueue) 성공에 대한 콜백 그리고 실패에 대한 콜백을 모두 받아와야 했다. 이렇게 콜백을 이용하는 것의 단점은 가독성이 현저히 떨어지고 별개의 http 요청에 대한 응답 결과를 결합하기 어렵다는 점이다. 예를 들면 ‘업체 목록’을 불러올 때 로컬 DB의 목록이 비어있다면 sequentially하게... [Read More]
  • The importance of TDD

    Javascript Test Framwork, JEST

    Test Driven Developent, 즉 테스트 주도 개발은 필수 사항은 아니지만 테스트 코드를 작성함으로써 성공 및 실패 케이스를 모두 검증하여 우리의 어플리케이션이 원하는 대로 동작할 것이라는 자신감을 가질 수 있게 해준다. 실패하는 테스트 코드를 먼저 작성해두고 실제로 개발하면서 이 테스트에 통과할 수 있는 방향으로 코드를 작성하는 작업을 반복한다. 이렇게 해서 모든... [Read More]