안드로이드에서 프로젝트를 만들 때 프로젝트 이름과 패키지 이름을 정하는걸로 시작한다.
그런데 이런 패키지 이름을 정하는 것도 규칙이 있을까 해서 찾아봤더니 규칙이 있다.
패키지 이름 규칙에 대해서 알아보자.
예시,
도메인 : kotlin.com
프로젝트 이름 : tutorial
도메인 이름을 거꾸로 배열 : com.kotlin
프로젝트 이름 붙임 : com.kotlin.tutorial
기능별로 세분화
com.kotlin.tutorial.base
com.kotlin.tutorial.kotlin
com.kotlin.tutorial.android
com.kotlin.tutorial.talk
Package 이름에 규칙이 있다면, Package 구조 방식에도 규칙 같은 것이 있을까 해서 한번 찾아보았다.
(안드로이드 스튜디오에서는 Package = 폴더, 라고 동일하게 사용한다. 즉, Project안에 폴더를 지칭할 때는 패키지를 말하는 것이다.)
Package 구조 방식에 대해서 검색하거나 여러 방면으로 찾아보았는데 어느게 맞다, 이게 정확하다라는게 딱히 정해지지가 않아서 그나마 구글링하면서 찾은 방법중에 괜찮은 패키지 구조 방식이 보여서 사용해보려고 한다.
보통 안드로이드를 접해서 사용하는 구조를 보면 종류별로 구분지어서 묶는 구조이다. ( 나또한 이 구조를 사용하고 있었다. )
이러한 구조가 초기에는 구조파악이 쉽고 누구나 쉽게 알 수 있는 구조이다.(activity/adapter 집합 등)
전체 패키지 구조를 보는건 Double Shift를 통해 검색하는게 더 빠르다고 합니다.
기존 방식에서 MVP/MVVM 패턴을 적용해보면서 만들어진 구조라고 한다.
안드로이드 스튜디오에서 폴더 구조로 보면
여기에서 핵심은 View안에 adapter/presenter/Activity/Fragment 등을 모두 모으는데에 있다.
또한 공용으로 사용되는 부분에 있어서는 외부에 따로 둔다고 한다. 아니면 Common 이름으로 폴더를 새로 만들어 구분해도 될것같다.
View를 모으는데에 있어서 장점으로는 해당 기능에 대해서 한눈에 파악하기가 쉽다라는 점이있다.
하지만 이런 식의 구조가 된다면 동일한 이름의 폴더들이 많아진다는 점이 있고, 이 구조를 도입하는데에 있어 각각의 기능들에 대해서 어디에 넣어야할지 고민을 많이 할 것 같다.
안드로이드 스튜디오를 하면서 프로젝트를 진행할 떄 패키지 구조를 너무 컴포넌트기반으로 만들어서 나중에 크기가 커지면 내가 만들었는데도, 어떤 기능에 대해서 찾으려고 하면 이 파일이 맞나? 라는 해프닝이 발생했다.
그래서 패키지 구조에 대해서도 어떤 방식이나 규칙들이 있을까 해서 찾아보았다.
MVP나 MVVM 등 디자인 패턴들이 많이 있었지만 어려운 구조였고 당장에 내가 쉽게 따라할 수는 없는 구조들이었다.
그러다가 딴 방식들을 둘러보다가 찾은게 이 Package 구조 방식이었다.
물론 이 방식도 쉽지는 않아보이지만 기존 방식대로 쓰는것보다는 구조 파악이나 관리적인 면에서 볼 때는 괜찮을것 같다.
참고 : https://thdev.tech/androiddev/2017/02/20/Android-MVP-Package-Structure/