-
Notifications
You must be signed in to change notification settings - Fork 4
안드로이드 코드 컨벤션
Mendel edited this page Oct 19, 2023
·
5 revisions
- 패키지 이름은 가능하면 소문자로 짓는다. 언더스코어는 사용하지 않으며, 불가피하게 연결된 단어를 사용해야 하는 경우는 camelCase로 표현한다.
package com.ddangddangddang.domain (o)
package com.ddangddangddang.domain_module (x)
package com.ddangddangddang.myProject (o)
- 초기 세팅 함수 이름은 setup-()으로 네이밍을 한다.
fun setupXXX()
- 상태에 대한 정보를 표현할 때, 프로퍼티는 is- 로, 메소드는 check-로 네이밍을 짓는다.
val isXXX(): Boolean
get() = // ...
fun checkXXX(): Boolean
- return이 있는 데이터를 불러올 때는 get- 이라는 이름을 사용한다.
fun getXXX(): DataType
- 특정 객체를 찾는 함수 이름
fun findXXX(): ObjectType
- 복수형을 가져오는 경우 뒤에 s를 붙이며, Collection 이름을 붙이지 않는다.
getProducts() (o)
getProductList() (x)
- 원시 값으로부터 enum을 찾을 때 함수 이름은 find()로 한다.
enum class Color {
RED, BLUE, GREEN;
fun find(rawColor: String): Color = when (rawColor) {
"red" -> RED
"blue" -> BLUE
"green" -> GREEN
else -> throw IllegalArgumentException("invalid color: $rawColor")
}
}
- Listener 이름
- function 을 1개만 가지는 경우
fun interface OnXXXListener
- function 을 2개만 가지는 경우,
interface XXXListener
- on[명사][동사] ()
리스너가 전적으로 이벤트를 처리할 때(즉, 이벤트를 핸들링하는 주체가 listen하고 있는 곳일 때)
fun onClick() fun onFocusChange() fun onScrollChange() fun onAnimationStart() fun onTextChange()
- on[명사][동사 과거형] ()
무언가 한 번 처리된 결과를 listener에게 알려줄 때(즉, 어떤 동작 이루에 이 동작이 일어났음을 listener에게 알려줄 때)는 과거형의 이름과 걸맞음
fun onScrollStateChanged() fun onTextChanged()
- function 을 1개만 가지는 경우
- when 상태문
- when 분기문은 한 줄일 경우 중괄호를 사용하지 않는다.
- 여러 개의 조건을 동시에 사용하는 경우 조건마다 개행하며, →를 아래로 내려쓴다.
when (myReference) { Comparable::class, Iterable::class, String::class, // trailing comma -> true else -> false }
- 아키텍처 모듈 간 모델과 Mapper는 다음과 같은 구조로 네이밍을 한다.
- Presentation 계층에 해당하는 현재 우리 app모듈에 위치한 모델들에만 -Model이라는 suffix를 붙인다.
- Mapper의 이름은 아래처럼, to[이동하고자 하는 계층명] 와 같이 네이밍을 한다.
fun User.toPresentation(): UserModel fun UserModel.toDomain(): User
- Resource 명
- layout은 <WHAT>_<WHERE>
activity_main fragment_home item_bid_history
- id는 <WHAT>_<DESCRIPTION>
- <WHAT>
- 뷰의 이름이 두 단어 이상이면, 카멜 케이스이면 대문자를 축약한 형태로 작성한다
- 뷰의 이름이 한 단어라면, 모두 소문자로 바꾼 형태로 작성한다.
- 커스텀뷰는 전체 뷰의 이름을 스네이크 케이스로 작성한다.
activity_main fragment_home item_bid_history
- <WHAT>
- drawable은 <WHAT>(<WHERE>)<DESCRIPTION>(<SIZE>)
- 여러군데에서 사용된다면, <WHERE>는 생략 가능
- 이미지의 크기가 1개 밖에 없는 경우, <SIZE>는 생략 가능
- <WHAT> 은 해당 이미지가 어디에서 쓰이냐를 따름.
Prefix 설명 btn_ 버튼으로 쓰이는 이미지 ic_ 버튼이 아닌 화면에 보여지는 이미지 bg_ 버튼이 아닌 화면에 보여지는 이미지 img_ 실제사진이거나 아이콘형태가 아닌 일러스트형태의 이미지 div_ divider로 활용되는 이미지 ic_people_alt_24 // 버튼 용도가 아니라 화면에 보여지는 이미지로써, 경매 입찰 인원을 표현하는데 사용된다. bg_white_grey_radius_10dp // 배경은 흰색, 테두리의 radius가 10dp에 회색
- String은 <WHERE>_<DESCRIPTION>
- 특정화면이 아니라, 여러군데에서 공통으로 재사용될 텍스트라면 all_<DESCRIPTION>로 이름을 짓는다.
all_price // "%,d 원" search_keyword_hint // "상품명 검색"
- layout은 <WHAT>_<WHERE>