오늘의 글 제목을 보시면

요즘 가장 핫하고, 어렵고, 세련되고, 어지럽고, 혁신적이고, 끝이없고, 확장적이고, 아름답고 .....

어떠한 수식어를 붙여도 안아까운 키워드 들입니다. 🔥🔥🔥🔥🔥

 

Clean Architecture 

Multi Module

Coroutine

Hilt

 

우선 추가적으로 글을 작성하기 앞서

저는 이 모든것의 1/3도 알지 못하는 

더 많은것을 습득하고 이해하길 원하는 마음으로

글을 작성하고 있습니다.

오직 저를 위한 글이니 너그럽게 이해 해주시길 바랍니다.

🙏🙏


 

우선 저의 의식의 흐름을 흘러흘러 찾아가보겠습니다.

시작은 "Now in Android" 였습니다. 🤖🤖

 

 

Now in Android  |  Android 개발자  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Now in Android 앱, Play 스토어에 출시 Now in Android는 완전한

developer.android.com

 

앱 개발자들의 유용한 참고 자료를 제시하는 

구글 마켓에 등록되어 있는 앱 입니다.

 

 

제가 집중한 문구는 바로

"개발 권장사항을 모델링하며 개발자에게 유용한 참고 자료가 되도록 설계되었습니다."

 

저를 위한 교보재

하늘의 한줄기 빛

어두운 터널의 출구

와 같이 저를 끌어당겼습니다.

 

 

 

GitHub - android/nowinandroid: A fully functional Android app built entirely with Kotlin and Jetpack Compose

A fully functional Android app built entirely with Kotlin and Jetpack Compose - android/nowinandroid

github.com

 

Now in Android 소스를 까보고 

당장이라도 머리가 터질거 같고

자괴감이 들어 바로 자리에서 누워버려야 할 정도였습니다.

😵‍💫😵‍💫😵‍💫😵‍💫😵‍💫😵‍💫

 

우선 지금까지 제가 이해한 내용으로는

 

 

 

이와 같이 관심사를 분리하여 구조를 명확히 하고 

협업에 유용하게 하며 

어느 부분에서도 확장이 가능하게 하는게 핵심이라고 이해했습니다.

 

간단하게 보면

 

App Layer 

는 유저에게 데이터를 보여주고 상호작용 합니다.

UI 부분이라고 생각하면 될것 같습니다.

App Layer는 Domain, Data Layer를 대상으로 의존성을 가지고 있습니다.

 

Domain Layer 

앱의 비지니스 로직이 위치한 곳이고 가장 중요한 핵심으로 표현되고 있습니다.

자주 변경되면 안되는 핵심이며 다른 Layer을 대상으로 의존성을 갖지 않습니다.

즉 Android플랫폼이 아닌 다른 어느곳에서도 바로 사용가능할 정도여야 합니다.

Domain Layer의 UseCase는 여러가지로 나눠서 관리할 수도 큰 단위로 나눠 관리 할 수도 있는데

해당 프로젝트의 성격과 팀원들의 성향에 따라 달라지게 될 것 같습니다.

 

Data Layer 

는 필요한 Data를 조회, 저장, 수정 등등

Data Layer는 Domain Layer를 대상으로 의존성을 갖습니다.

 

 

 

저는 여기까지 도달하는데도 머리가 깨졌습니다.

 

 

자 다음으로 그래서 Multi Module은 무엇이냐

한 프로젝트 안의 소스를 여러개의 Module 단위로 잘라 구성하는것 입니다.

"Now in Android"소스를 확인해 보면

위에서 구분한 Layer를 기준으로 Module이 나눠지는 것 처럼 보였습니다.

 

여기서 부터는 다른 많은 개발자 분들의 소스를 빌려

저도 하나씩 만들어봤습니다.

 

 

GitHub - kyuchanE/chanq_multi_module_mvvm

Contribute to kyuchanE/chanq_multi_module_mvvm development by creating an account on GitHub.

github.com

 

 

 

 

이와 같이 보기 좋게 Module를 생성하고

간단하게 프로젝트를 생성해 봤지만

어떻게 잘 사용할 수 있을지는 지금도 계속 연구중에 있습니다.

 

조금 더 학습하고 연구하여

다시 더 좋은 글 작성해보도록 하겠습니다.

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 해보겠습니다.

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기