Skip to content

컨벤션

K_Gs edited this page Dec 6, 2022 · 1 revision

라벨

feature : 기능 개발

design : 디자인 변경시

bug : 버그 발견

learned: 배운점

refactor: 리팩토링

doc: 문서

데일리 회고 양식

### 날짜

## 오늘의 한일
내용을 적어주세요.

## 오늘의 회고
내용을 적어주세요.

## 배운점
내용을 적어주세요.

## 내일 할일
내용을 적어주세요.

깃플로우 & 커밋 메세지 컨벤션 & 네이밍 컨벤션

깃플로우 참고

https://techblog.woowahan.com/2553/

브랜치 이름 규칙 : feature/기능_기능

머지된 이후에는 작업브랜치 삭제

커밋메세지 컨벤션

ex ) feat : ~~ 구현 #이슈번호

  1. 제목 줄은 "유형 : #이슈번호 제목"의 형식으로 작성한다.
  2. 커밋 메시지 유형은 다음 중 하나를 사용한다
    1. feat 기능 추가, 삭제, 변경 (코드 수정 발생)
    2. fix 버그를 고친 경우 (코드 수정 발생)
    3. refactor 코드 리팩토링 (코드 수정 발생)
    4. test 테스트 코드 추가, 삭제 변경 (코드 수정 없음. 테스트 코드에 관련된 모든 변경)
    5. docs 문서 추가, 삭제 변경 (코드 수정 없음)
    6. chore 빌드 스크립트 수정, 패키지 배포 설정 변경 등 (코드 수정 없음), 리포맷

image

TextView → tv_

ImageView → iv_

Button → btn_

layout → container_

View → view_프래그먼트이름_설명

layout → fragment(activity)_이름

include_

item_

기능이름_레이아웃이름_기타 (permission_login_message)

  • 하나의 함수에 하나의 일만 하기

안드로이드 코틀린 컨벤션

중괄호

when (value) {
    0 -> return
    // …
}

if (string.isEmpty())
    return  // WRONG!

if (string.isEmpty()) {
    return  // Okay
}

빈 블록

빈 블록 또는 블록 형식 구문은 K&R 스타일이어야 합니다.

try {
    doSomething()
} catch (e: Exception) {} // WRONG!
try {
    doSomething()
} catch (e: Exception) {
} // Okay

표현식

표현식으로 사용되는 if/else 조건문에서는 전체 표현식이 한 줄에 들어가는 경우에만 중괄호를 생략할 수 있습니다.

val value = if (string.isEmpty()) { // Okay
    0
} else {
    1
}

표현식 함수

함수에 표현식이 하나만 포함되는 경우 [표현식 함수](https://kotlinlang.org/docs/reference/functions.html#single-expression-functions)로 표현될 수 있습니다.

override fun toString(): String {
    return "Hey"
}
override fun toString(): String = "Hey"

상수 이름

상수 이름에는 UPPER_SNAKE_CASE(모두 대문자)를 사용하며 밑줄로 단어를 구분합니다.

상수가 아닌 이름

상수가 아닌 이름은 camelCase로 작성됩니다. 이는 인스턴스 속성, 로컬 속성, 매개변수 이름에 적용됩니다.

패키지 이름

패키지 이름은 모두 소문자이며 연속 단어는 밑줄 없이 연결됩니다.

// Okay
package com.example.deepspace
// WRONG!
package com.example.deepSpace
// WRONG!
package com.example.deep_space

코틀린 컨벤션

  • 클래스 내부에서 코드 배치
    • 순서
      1. 프로퍼티 선언, init 블록
      2. 부생성자
      3. 메서드 선언
      4. companion object
    • 코드를 위아래로 읽을 때 로직을 따라갈 수 있게 관련된 것은 연달아 배치
    • nested 클래스는 그 클래스를 사용하는 곳 바로 다음에 선언
      • 외부에서만 사용되면 companion object 다음에 배치

기타 컨벤션

  • 커스텀 클래스 리스트(e.g. List<Position)의 확장 함수는 해당하는 커스텀 클래스와 같은 파일에 선언
    • 이외의 확장 함수는 Ext.kt에 선언
  • 람다 중첩 사용시 모든 파라미터명 반드시 바꾸기
  • 파라미터 모두 한줄에 쓰거나 모두 줄바꿈

pr 템플릿

## Main Changes
- 한 일 1
- 한 일 2

## Issue
- 고민한 내용
- Main Changes에 대한 부가설명(선택사유)

## Screenshots
- 내용을 적어주세요.