[Android] Jetpack Compose 기술 선정 및 컨벤션

박세호·2025년 5월 4일
0

Android

목록 보기
2/3
post-thumbnail

SOPT 36기 합동 세미나를 앞두고 있다. 이번 프로젝트에서 안드로이드 첫 리드를 맡게됐다. 이번 프로젝트의 핵심 목적은 안드로이드 경험이 적은 팀원도 빠르게 진입 가능하고, 협업 시 충돌 없이 책임 분리가 명확한 구조 유지하는 것이다. 따라서 프로젝트 구조를 최대한 단순화해서 진행할 예정이다.

Coding Convention
Git Convention
Package Convention
기술 스택 선정 이유

그래서 주제 발표 이전에 위와 같은 컨벤션을 정하게 됐는데, 이를 공유하고자 글을 쓴다.

Coding Convention

1. 패키지 - 소문자 (한 단어)

ex) core
ex) data
ex) feature
ex) home

2. 클래스 & 인터페이스 - 파스칼 케이스

ex) HomeRoute()
ex) HomeViewModel()

3. 변수 & 함수 - 카멜 케이스

ex) isButtonEnabled
ex) isPasswordValid()
ex) getUserInformation()

4. resource 파일 - 스네이크 케이스

strings
    (view_)내용 설명
    <string name="my_home">우리집</string> -> 여러 화면에서 사용될 때
    <string name="home_my_home">우리집</string> -> 한 화면에서 사용될 때

drawable
    type_(view_)내용 설명
    ex) ic_arrow_right.xml
    ex) img_user_profile.png -> 여러 화면에서 사용될 때
    ex) img_home_user_profile.png -> 한 화면에서 사용될 때

Git Flow 및 Convention

1. 이슈 파기

[Type] 작업 내용
ex) [setting] 디자인 시스템 정의

2. 브랜치 파기

Type/#IssueNumber-작업 내용
ex) setting/#1-design-system-color
ex) feature/#2-home
ex) refactor/#3-home-refactor

3. 작업 후 커밋 메세지

Type/#IssueNumber: 작업 내용
ex) setting/#1: 디자인 시스템 폰트 정의
ex) feature/#2: 홈 뷰 구현
ex) feature/#3: 홈 api 연결

4. PR 올리기

Type/#IssueNumber: 작업 내용
ex) setting/#1: 디자인 시스템 폰트 정의
ex) feature/#2: 홈 뷰 구현
ex) feature/#3: 홈 api 연결

5. Merge 하기

merge #IssueNumber -> develop
2명 이상의 approve 시 merge 가능

Package Convention

구글 권장 아키텍처를 기본으로 하되, 실용적인 수준으로 단순화했다.

core : UiState/확장 함수 등의 코드 모음
data : 서버와 관련된 코드 모음
feature : 클라이언트와 관련된 코드 모음

📂 Project
┣ 📂 core
┃ ┣ 📂 extension
┃ ┣ 📂 util
┣ 📂 data
┃ ┣ 📂 dto
┃ ┃ ┣ 📂 request
┃ ┃ ┣ 📂 response
┃ ┣ 📂 module
┃ ┣ 📂 service
┣ 📂 presentation

기술스택 선정

기술역할
SAA화면별 책임 분리 (ViewModel 기반)
KotlinAndroid 공식 언어
Coroutine비동기 처리
StateFlow화면 상태 관리
SharedFlow1회성 이벤트 처리
Jetpack NavigationCompose 기반 내비게이션 관리
HiltDI(의존성 주입)
Retrofit + OkHttp서버 통신 라이브러리 (REST API 호출)

0개의 댓글