- 1개의 feature 단위로 브랜치 생성
- 1개의 feature 단위로 issue 생성
- 1개의 issue 내에 세부작업마다 commit 을 날려
- 1개의 feature 끝나면 pull request 열어 ⇒ 머지 하면 ⇒ 해당 issue close
## 화면 이름
## 기능 설명
## 필요 태스크
- [ ] Task1
- [ ] Task2
- 한글로 쓰기
- 명령조 사용하기 (수정(o)수정한다(x))
- issue 제목
- [화면명] 이슈명
- github label
- commit prefix 과 동일하게 만들 예정
- 팀원 이름 추가
- pull request 라벨 추가 (풀리퀘할 때 달기)
-
#{issue_number} [prefix] 작엽명
-
ex) #1 [feat] 로그인 버튼 클릭 이벤트 처리
(이슈를 생성하면 이슈 번호가 부여됨. 커밋할 때 이슈단으로 커밋하고 이슈번호를 커밋메시지에 #과 함께 적어주면 어떤 이슈를 처리하는 작업이었는지 조회하기 편함.)
-
commit message 마지막에 마침표(.) 찍지 않기
- commit prefix
- [feat] : 기능 추가, kotlin 작업
- [layout] : xml 작업
- [fix] : 에러 수정, 버그 수정
- [docs] : README, 문서
- [refactor] : 코드 리펙토링 (기능 변경 없이 코드만 수정할 때)
- [modify] : 코드 수정 (기능의 변화가 있을 때)
- [chore] : gradle 세팅, 위의 것 이외에 거의 모든 것
- commit prefix
##관련 이슈번호
##화면 이름
##완료 태스크
-
-
-
한글로 쓰기
-
명령조 사용하기 (수정(o)수정한다(x)
-
제목: issue 번호 + issue 제목
ex) #5 [습관방] 습관방 디자인
-
내용: 템플릿 형식을 따르며 풀리퀘에서 해결한 이슈들의 이슈번호,화면이름, 완료테스크를 이슈별로 정리해서 작성한다.
what | naming rules | example |
---|---|---|
function | Lower Camel Case | fun sparkFunction |
variable | Lower Camel Case | val/var sparkVariable |
class | Upper Camel Case: | :class SparkClass |
interface | Upper Camel Case | interface SparkInterface |
const val | Screaming Snake Case | const val SPARK_VALUE |
xml file | name Snake Case | activity_main.xml fragment_spark.xml item_spark(where)feed(what).xml menu(where)(what).xml selector(where)_(what).xml |
xml id | Snake Case | tv(view)_main(where)_nickname(what) |
drawable file name | Snake Case | selector_main(where)_btn_join(what) |
colors.xml | Lower Camel Case Snake Case Upper Camel Case |
디자이너가 정해준 컬러 이름으로 |
strings.xml | Snake Case | [where]_[what] |
styles.xml | Snake Case | [where]_[what] |
function name | 초기화 ⇒ init~ 갱신 ⇒ update~ 삭제 ⇒ remove~ 통신 ⇒ get, delete, put, post 이름에 따라서 함수명 ⇒ getUserList(), postUser(), putProfile |
set[ItemName]ClickListener set[AdapterName]Adapter set[ValueName]Observe() |
-
패키지 네임은 무조건 소문자로 작성한다.
-
패키지는 크게 data 패키지, di패키지, ui패키지, util 패키지로 나눈다.
-
data 패키지
- data 패키지는 크게 local 패키지와, remote 패키지, repository 패키지로 나눠진다.
- local 패키지에는 로컬 저장소에서 SharedPreference와 관련된 파일들이 들어간다.
- remote 패키지에는 외부 저장소(서버)에서 오는 model(responseData, requestData 등), api(service 등)등이 들어간다.
- repository 패키지에는 레포지토리 파일(도메인 역할)들이 들어간다.
-
di 패키지
- di패키지에는 의존성 주입(Hilt)과 관련된 코드(Module)들이 들어간다.
-
ui 패키지
-
ui 패키지는 크게 base 패키지와, view 패키지, viewmodel 패키지로 나눠진다.
-
base 패키지
- base 패키지에는 뷰들이 상속받는 베이스 클래스(BindingActivity, BindingFragment)가 들어간다.
-
view 패키지
- view 패키지에는 프로젝트 내에서 사용되는 뷰(액티비티나, 프래그먼트, 어댑터, 모델 등)와 관련된 클래스들이 들어간다.
- 연관있는 클래스(ex : 로그인, 회원가입)들은 패키지 한 곳에 보관한다.
- 커스텀 뷰의 경우 각 view에 대한 패키지 하위에 custom 패키지를 따로 두어 거기서 관리한다.
-
-
util 패키지
- util 패키지에는 확장함수나, 다양한 util 관련 파일들이 들어간다.
-
master / develop / feature / hotfix
-
master, develop, feature/화면_작업명 (브랜치 삭제, 생성 매번 해줘야함)
-
feature/{feature-name}
이슈추적을 사용한다면 이와 같은 형식을 따른다.ex) feature/init-project, feature/build-gradle-script-write
-
브랜치명 예시
feature/init-project