Skip to content

android-clean-architecturea 레포지토리 분석하고 부족한점 채우기

Notifications You must be signed in to change notification settings

jiwon2724/jiwon2724-android-clean-architecture-analyze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

android-clean-architecturea 레포지토리 분석

https://github.com/ydhnwb/android-clean-architecture

안드고님이 추천해주신 coroutine, hilt, flow를 사용한 프로젝트이다.

위 기능들을 더 딥하게 공부하기에 좋은 앱인 것 같아 분석해보기로 했다. -> 서버에러로 실행은 불가능하다.

프로젝트 폴더 구조

  • data

    • login
    • product
    • register
  • domain

    • login
    • product
    • register
  • presentation

    • login
    • main
    • register

data 패키지(레이어)는 remote, repository 패키지가 존재하고, Hilt 주입을 위한 Hilt Module Class가 존재한다.

domain 패키지(레이어)는 entity, usecase 패키지가 존재하고, Datasource에 접근하는 Repository가 존재한다.

presentation 패키지(레이어)는 login, main, register 패키지가 존재하고, Activity, Fragment, ViewModel 등 UI 컴포넌트와 Android Framework 관련된 코드를 포함한다.

프로젝트를 분석하면서 나에게 적용하면 좋은 것과 길러야할 개발 습관

1. Clean Architecture 구조 파악.

클린 아키텍처의 각 계층간 동작 이해하고, 관심사 분리 확실하게 하기. -> 싱글모듈 패키지구조에서 멀티모듈로 바꿔보기.

image

2. sealed class 사용해서 UI State 관리하기.

sealed class RegisterActivityState {
    object Init : RegisterActivityState()
    data class IsLoading(val isLoading: Boolean) : RegisterActivityState()
    data class ShowToast(val message: String) : RegisterActivityState()
    data class SuccessRegister(val registerEntity: RegisterEntity) : RegisterActivityState()
    data class ErrorRegister(val rawResponse: WrappedResponse<RegisterResponse>) : RegisterActivityState()
}

3. Utils 클래스 만들어서 자주 사용되는 기능 확장함수로 관리하기.

fun Context.showToast(message: String){
    Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}

fun Context.showGenericAlertDialog(message: String){
    AlertDialog.Builder(this).apply {
        setMessage(message)
        setPositiveButton(getString(R.string.button_text_ok)){ dialog, _ ->
             dialog.dismiss()
        }
    }.show()
}

4. StateFlow, SharedFlow 상황에 맞게 사용하기

5. OkHttp 세부사항 적용하기

ex) connectTimeout, readTimeout 등

6. 패키지 구조를 모듈화로 변경 적용

분석하면서 공부한 것들

  1. Android Clean Architecture
  2. 클린 아키텍처 모듈화
  3. Retrofit 사용시 알아두면 좋은 것
  4. StateFlow, SharedFlow
  5. 안드로이드에서 StateFlow, SharedFlow 어떻게 사용해야할까?

분석 후 만든 앱✌️

https://github.com/YAPP-Github/pyeonlee-aos

About

android-clean-architecturea 레포지토리 분석하고 부족한점 채우기

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published