| Item | Naming Rule | Example | Description |
|---|---|---|---|
| Class | Pascal Case |
TestActivity.kt | 명사로 작성 |
@Composable 함수도 이 규칙을 따름 |
|||
| Interface | Pascal Case |
TestInterface.kt | |
| Function | lower Camel Case |
getTest( ) | 동사나 동사구로 시작 |
| (예외: UI를 그리는 Composable 함수는 PascalCase) | |||
| Variable | lower Camel Case |
var = userPwd | 명사로 작성 |
| Value | lower Camel Case |
val = userPwd | 명사로 작성 |
| const val | UPPER SNAKE CASE |
NICKNAME_PATTERN | const val이나 object 내의 상수에 사용 |
| Package | lower Camel Case |
org.sopt.certi.util | 언더바 없이 소문자로 작성 |
| Design Tokens | Pascal Case |
val White = Color(0xFFFFFFFF) | 앱 전체에서 사용되는 디자인 토큰에는 PascalCase를 사용 |
| Resource | snake case |
ic_home.xml | |
| ic_profile_24.xml | |||
| img_banner_01.png | res 폴더 안의 파일들 이름 규칙 |
||
파일 이름만 보고도 내용을 유추할 수 있도록 [접두어]_[기능/화면/]_[설명]_[상태/크기].xml/png 순서로 작성 |
|||
| 접두어: ic(아이콘), img(이미지) | |||
| strings.xml | snake case |
login_title, | |
| common_confirm | 화면별로 묶거나 공통(common)으로 묶어서 [화면/그룹/범위]_[기능/요소]_[속성/설명] 순서로 작성 |
[접두어]_[기능/화면]_[설명]_[상태/크기].확장자ic, img)_selected), 채워짐(_filled), 크기(_24), 색(_white) 등strings.xml
공통 - 앱 전체에서 쓰임
| 접두어 | 설명 | 예시 |
|---|---|---|
action_ |
버튼이나 메뉴의 동작 | action_ok, action_cancel, action_save |
label_ |
입력창 제목, 짧은 라벨 | label_name, label_email, label_password |
title_ |
공통 다이얼록, 팝업 제목 | title_notice |
placeholder_ |
입력창 힌트 (placeholder) | hint_email_input |
error_ |
에러 메시지 | error_network_connection, error_invalid_format |
msg_ |
일반 안내 메시지 (토스트, 다이얼로그 내용) | msg_delete_confirm, msg_loading |
화면별 - 특정 화면 전용
[화면명]_[요소]_[설명] 순서login_title, login_btn_kakao, login_msg_failedmypage_menu_notice, mypage_profile_editComposable 함수: PascalCase (명사형 권장)
@Composable fun MyPageScreen() { ... } (O)@Composable fun drawMyPage() { ... } (X - 동사형 지양)이벤트 핸들러: on + Subject + Event 순서
on: 이벤트 핸들러임을 나타내는 접두어 (고정)대상 (생략 가능): 무엇이 변했거나 클릭되었는지 명시 (컨텍스트가 명확하면 생략)행위 (필수): 클릭됨, 변함, 포커스됨 등 일어난 사건onClick, onValueChange, onProfileClickModifier 파라미터: 모든 Composable 함수는 modifier를 파라미터로 받아야 하며, 첫 번째 옵셔널 파라미터로 둡니다.
@Composable
fun ProfileImage(
imageUrl: String, // 필수 파라미터
modifier: Modifier = Modifier, // 첫 번째 옵셔널 파라미터로 Modifier 배치
contentDescription: String? = null, // 나머지 옵셔널 파라미터들...
shape: Shape = CircleShape,
borderWidth: Dp = 1.dp
) { ... }
상태 호이스팅 (State Hoisting): 상태(State)는 내부에서 만들지 않고, 가능한 호출하는 부모가 내려주도록 설계합니다.
https://developer.android.com/kotlin/style-guide?hl=ko
// TODO: [작성자] 내용 형식을 사용하여 남깁니다.