컨벤션 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
협업 개발 컨벤션
이 문서는 마롱 개발의 코드 품질, 협업, 관리의 일관성을 높이기 위한 Python PEP8 기반의 공통 개발 규칙(컨벤션)을 소개하고 있습니다.
Python 코드 스타일 (PEP8 요약)
1. 인덴트(들여쓰기)
- 공백 4칸 사용 권장
- 여러 줄 연결 시, 수직 정렬(아래 예시 참고)
foo = long_func(var_one, var_two, var_three, var_four)
2. 탭 vs 공백
- 공백 사용 권장, 탭은 레거시 코드 호환 용도로만 사용 권장
- Python3: 탭+공백 혼용 금지
3. 최대 줄 길이
- 코드: 79자
- 주석/문서 문자열: 72자
4. 연산자 줄바꿈
- 이항 연산자 앞에서 줄바꿈 권장
# Good (이항 연산자를 앞에 두고 줄바꿈)
total = (first_variable
+ second_variable
- third_variable)
# Bad (이항 연산자를 뒤에 두고 줄바꿈)
total = (first_variable +
second_variable -
third_variable)
5. 빈 줄
- 최상단 함수/클래스 사이: 2줄 띄우기
- 클래스 내 메서드 사이: 1줄 띄우기
6. 인코딩
- Python3: UTF‑8 권장
- 일반적으로 인코딩 선언 필요 없음
7. 명명 규칙
대상 | 규칙 예시 |
---|---|
모듈/패키지 | 소문자, 필요시 밑줄 |
함수/변수 | snake_case |
클래스 | PascalCase(CapWords) |
상수 | ALL_CAPS_WITH_UNDERSCORES |
내부용 | _protected (단일 언더스코어) |
private | __private (이중 언더스코어) |
특수 메서드 | __magic__ (직접 생성X) |
혼동 금지 | 1, O, l 등 혼동되는 문자 금지 |
8. 기타
- 필요 없는 공백, 주석 금지
- 불필요하게 긴 함수는 분리
- PEP8 공식 문서,
Google Python Style Guide 참고
PEP8 요약
- 인덴트: 공백 4칸
- 최대 길이: 코드 79자, 주석 72자
- 명명: snake_case, PascalCase, ALL_CAPS
- 빈 줄/줄바꿈: 논리적 구분 명확히
- 인코딩: Python3는 UTF‑8
- 이름 규칙: 내부용
_
, private용__
, 시스템용__magic__
2. Git 협업 컨벤션
브랜치 전략
- 메인:
main
(배포),develop
(통합 개발) - 기능:
feature/기능명
- 버그fix:
fix/이슈명
- 브랜치명: 소문자, 카멜/스네이크 혼용금지
- 병합(PR) 전
rebase
권장
커밋 메시지 규칙
feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 수정
style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
design : 사용자 UI 디자인 변경 (CSS 등)
refactor : 코드 리팩토링
test : 테스트 코드, 리펙토링 테스트 코드 추가
build : 빌드 파일 수정
ci : CI 설정 파일 수정
perf : 성능 개선
chore : 빌드 업무 수정, 패키지 매니저 수정
rename : 파일 혹은 폴더명을 수정만 한 경우
remove : 파일을 삭제만 한 경우
- 명확한 한글/영어, 구체적으로 작성
커밋 예시
feat: 그룹별 미션 생성 기능 추가(`GroupMissions` Table 연동) #5
fix: LoRA Fine-tuning 파일이 정상적으로 업로드되지 않는 문제 수정
PR(Pull Request) 규칙
- 제목: prefix + 명확한 설명
- 내용: 변경 요약/확인사항/관련 이슈 명시
- 코드리뷰 지정, 셀프체크리스트 활용
폴더/파일 구조
- 모듈/기능 단위 분리, 공통 폴더(예: config, utils, tests)는 루트에 아래 형식으로 정리
project/
├─ app/
│ ├─ main.py
│ ├─ module1/
│ ├─ module2/
├─ tests/
├─ config/
├─ requirements.txt
└─ README.md
문서화
- 함수/클래스 docstring
- 아키텍처, API, 컨벤션 문서 별도 관리(위키/노션 등)
- README 등 버전별 관리
협업/커뮤니케이션
- 기본적으로 비동기 커뮤니케이션 기반으로 디스코드 활용
- 업무/PR 단위 소통, 기록 남기기