마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[디렉토리 폴더 구성] 모듈별 파일 분류 방법

0 추천
안녕하세요,

iOS와 Visual Studio에서만 코딩을 하다가 이번에 처음으로 안드로이드 앱 개발을 하게 되었습니다.

그리고 허접하지만 아래 2가지 질문이 있습니다.

1. 보통 프로젝트 하위 폴더를 만들고 관련있는 클래스 별로 관리를 해왔는데요. 안드로이드 스튜디오에서는 어떻게 관리를 해야 하나요?

유튜브에서 튜토리얼을 보면 보통

app > Java > com.example.project-name

(MainActivity)가 들어있는 폴더에 새로운 파일을 추가해서 그냥 쓰시더라구요. 그런데, 사용하는 클래스가 많아지면 보통 어떻게 하시는지 궁금합니다.

2. 이때 만드는 폴더는 어떤 건가요?

Package, Android Resource Directory 인지 혹은 다른 어떤 것인지 궁금합니다.

 

선배님들의 답변 부탁드리겠습니다.
kito (180 포인트) 님이 2022년 3월 24일 질문

1개의 답변

0 추천
먼저 package와 resource는 저장하는 대상이 다릅니다 . package 는 클래스파일을 두는 곳이고 resource는 이미지, 앱에 사용하는 문자열 리소스(언어별로 지원가능), 폰트, 레이아웃 등 코드 외의 정적인 데이터를 보관하는 곳입니다. Resource 는 Android Studio의  ResourceManager 탭을 이용하시면 한곳에서 관리가 가능합니다.

Package읙 관리는 앱 아키텍쳐를 어떻게 두느냐에 따라 달라질 수 있습니다. 많은 개발자들이 선호하는 구조는

core/common -공통 사용 코드, Dependency Injection, Utility, Navigation
data - API, Database 관련 코드(DataSource)
domain - 비지니스로직 관련 코드 (Repository'/UseCase/Interactor)
presenter/ui - 화면 관련코드 (Activity, Fragment, ViewModel/Preseneter등)

와 같이 3개 레이어에 해당하는 상위 패키지(data/domain/presentention)를 두고 공통적으로 사용할 core/common 패키지를 두어서 유틸리티 관련 클래스 등 각 최상위 패키지에서 공통으로 사용할 코드를 위치시킵니다.

domain, data 패키지에는 업무에 따른 단위로 하위 패키지를 둡니다. 예를 들면, account, memeber, user, payment 등등. 업무에 따른 데이터타입으로 나뉜다고 볼 수도 있습니다.

presentation/ui에는 보통 화면별이나 기능(feature) 별로 패키지를 구성합니다.
home, dashboard, settings, account, transaction, login, onboard 등등과 같이요.

한 패키지 안에는 너무 많은 클래스를 두면 관리가 힘들므로 보기에 적절한 숫자까지만 위치시키는 것도 하나의 팁입니다.

구글에 아래와 같은 키워드로 검색을 하시면
android best project structure

개발자들이 어떤 구조를 선호하는지 더 자세하게 아실 수 있을 겁니다.
spark (226,380 포인트) 님이 2022년 3월 24일 답변
spark님이 2022년 3월 25일 수정
상세한 답변 진심으로 감사합니다. :)
...