-
Notifications
You must be signed in to change notification settings - Fork 5
코딩 컨벤션
주재현 edited this page Dec 12, 2023
·
1 revision
main ( 배포용 )
develop (기능 개발 )
feature-be/작업 내용
feature-aos/
ex) feature-aos/화면-UI
-그리기
hotfix/ ( main 브랜치에 문제 발생 시 )
같은 분야의 팀원이 모두 확인을 했을 경우에만 머지가 가능하도록 규칙 생성.
<!-- 🔥 다음 양식으로 제목을 작성해주세요 : [task num] task 이름 -->
<!-- ex) [A-01]: 화면에 지도를 보여줄 수 있다. -->
## 작업 내용
<!-- ex) 화면 UI 그리기 -->
- [ ]
## 참고한 자료
## 스크린샷 (필수)
<!-- 🔥 다음 양식으로 제목을 작성해주세요 : 한 일의 type(#issue number): 작업 내용 -->
<!-- ex) Feature(#133): 화면 UI 그리기 -->
## 작업 개요
<!-- 작업에 대한 설명을 간단하게 작성해주세요. -->
## 작업 사항
<!-- 작업에 대한 설명을 코드와 관련하여 남겨주세요. -->
## 고민한 점들(필수 X)
<!-- 작업을 진행하면서 고민했던 점들을 추가해주세요 -->
## 스크린샷(필수 X)
<!-- 작업을 파악하는 데 도움이 되는 스크린샷을 추가해주세요 -->
제목
- 50자 이내
- 키워드는
block
처리 - 구어체 / 문장형 x, 명령형으로 작성
- 마침표 사용 x
내용
- 생략가능
- 72자 이내
- what, why만 설명. how는 작성x
ex) [FEAT] `asd화면` 기본 레이아웃 작성
로직을 포함하지 않는 레이아웃 파일만 작성
Tag | Description |
---|---|
[FEAT] | 기능개발 |
[DESIGN] | UI 레이아웃 추가 및 수정 |
[FIX] | 버그수정 |
[TEST] | 테스트 코드 추가 및 수정 |
[SETTING] | 환경 설정 추가 및 수정 |
[DOCS] | 문서화, 주석 |
[REFACTOR] | 리펙토링 |
[STYLE] | 스타일 |
Android Studio version: Iguana | 2023.2.1 Canary 12
kotlin version: 1.9.0
min SDK: 26
jvmTarget: VERSION_17
JavaVersion: VERSION_17
Layout: XML → Compose
- 스네이크 케이스
- id ex) TextView → tv_title
- 타입명이 가장 앞에 올 수 있도록
- 타입 명을 제외한 것들은 풀네임 사용.
- 스네이크 케이스
- 최대한 구체적으로 작성.
- ex) sign_up_activity_tv_title / sign_up_acitvity_et_email_hint
- fragment, activity 코드 최소화를 위해 데이터바인딩, 바인딩어댑터 지향
- 뷰모델 바인딩 변수는 vm
- 화면마다 화면을 담당하는 UiState를 만듭니다.
- ui 상태 홀더 클래스 suffix - UiState
- model과 매핑된 클래스 suffix - State
- model mapping method name - asXXXState
- UiState는 stateflow로 구현합니다.
- 이벤트는 sharedflow로 구현합니다.
- 기능 기획 이후 결정
- 타입 명시하기
- 카멜 케이스
- 명사. 데이터타입을 포함하지 않는 이름
- ex) productList (x) products (o)
- private val로 선언. 필요할 때 스코프 조절
- 동사
- compose 함수를 제외, 카멜케이스
- 함수명으로 내부 로직을 예상할 수 있도록. 최대한 서술적으로 명명.
- depth를 최대한 줄입시다.
- 추상화 수준을 맞춥시다.
- 하드코딩을 지양합시다.
- is, has → boolean
- get → return 해야함
- set → return 없음
- fetch - remote
- load - local
- 파스칼 케이스
- upper snake case
- 화면에 보이는 가를 기준으로 string.xml에 분리.
- it, this 지양
- else if 사용 금지. when으로 변환.
- else도 지양 고려. 중괄호 무조건 쓰기.
https://radlohead.gitbook.io/typescript-deep-dive/styleguide
-
any
타입은 금지하고, 안쓰면 죽을때는unkown
사용하기 -
type
사용할 때 이름은PascalCase
const MOBILE_OS = {
IOS: 'iOS',
Android: 'Android'
} as const;
-
enum
사용 금지,const
- union이나 intersection이 꼭 필요할 때
type
을 사용 -
extends
또는implements
하고 싶을 때interface
를 사용
vscode
eslint
prettier
{
"singleQuote": true,
"semi": true,
"useTabs": false,
"trailingComma": "all",
"printWidth": 120,
"tabWidth": 2
}
변수 명: camelCase
ex) testTest
class 및 객체 리터럴: PascalCase
도메인 별로 분리
src/movies/movies.conroller.ts
src/movies/entities/movies.entitiy.ts
src/movies/dto/create-movie.dto.ts
- domain명.종류.ts
- movies.controller.ts
- 두 단어 이상이면 하이픈(-)으로 분리
entitles/movies.ts
controllers/movies.ts
if (!hasError) {
throw new Error();
}
- if 문에 무조건 중괄호로 쓰기
if (a < 3) {
return false;
}
if (hasError) {
return false;
}
...
a += b;
return a;
- Ealry Return으로 수행되지 않는 조건을 리턴하기
- [기술 공유] Clean Agile
- [기술 공유] Android 라이브러리 비교
- [기술 공유] Android Project CD 적용
- [기술 공유] Google Maps SDK
- [기술 공유] 마커 렌더링
- [기술 공유] Infrstructure as Code 도구 테라폼
- [기술 공유] Redis란??
- [기술 공유] Redis를 이용한 캐싱
- [기술 공유] NestJS S3 대용량 파일 업로드 (with PreSigned URL, S3 MultiPart Upload)
스크럼
- [2023‐11‐06] 목표 설정
- [2023‐11‐07] 기능 회의
- [2023‐11‐08] 스크럼
- [2023‐11‐09] 스크럼
- [2023‐11‐13] 스크럼 ‐ 이번주 할일
- [2023‐11‐14] 스크럼
- [2023‐11‐16] 스크럼, 회의
- [2023‐11‐20] 스크럼, 이번주 할일
- [2023‐11‐21] 스크럼, 오늘 할일
- [2023‐11‐22] 스크럼 회의
- [2023‐11‐23] 스크럼 회의
- [2023‐11‐27] 스크럼 회의
- [2023‐11‐28] 스크럼 회의
- [2023‐11‐29] 스크럼 회의
- [2023‐11‐30] 스크럼 회의
- [2023‐12‐04] 스크럼
- [2023‐12‐05] 스크럼
- [2023‐12‐06] 스크럼
- [2023‐12‐07] 스크럼
- [2023‐12‐11] 스크럼
- [2023‐12‐12] 스크럼 및 발표 자료 준비
- [2023‐12‐13] 스크럼 및 발표 피드백