- SOLID 원칙을 지키면서 구현합니다.
- 메서드는 짧게, 한가지 기능만 수행하도록 합니다.
- 빠른 구현보다는 항상 깨끗하고 잘 테스트된 코드를 우선시합니다.
- 단순성: 복잡한 것 보다, 단순한 해법을 선택합니다.
- DRY (Don't Repeat Yourself): 코드 중복을 철저히 피합니다.
- 최소 상태: 가능한한 적은 상태만으로 동작하도록 합니다.
- 상수 정의: 매직 넘버나 문자열은 명확한 이름의 상수로 정의합니다.
- 명확성: 변수, 함수, 클래스의 이름 및 코드의 구조를 통해 의도를 명확히 표현합니다.
- 코드 구조: 복잡한 로직은 함수나 클래스나 모듈로 분리하여 관심사를 분리합니다.
- 모든 변경사항은 두 가지 구별되는 유형으로 분리합니다:
- 구조적 변경: 기능 변경없는 코드 재배열 (이름 바꾸기, 메서드 추출, 코드 이동)
- 행동적 변경: 기능을 추가하거나 수정하는 것
- 구조적 변경과 행동적 변경을 같은 커밋에 혼합하지 않습니다.
- 둘 다 필요한 경우 구조적 변경을 먼저 합니다.
- 구조적 변경 전후에 테스트를 실행하여 행동이 변경되지 않았음을 검증합니다.
- 코드를 수정하기 전에는 수정에 필요한 분석을 충분히 수행합니다.
- 분석 결과와 수정 계획을 사용자에게 설명하고 승인을 받은 후 진행합니다.
- 작업 중에 과도하게 많은 코드를 추가하지 않도록 주의합니다.
- 다음 조건을 모두 만족할 때만 커밋합니다:
- 모든 테스트가 통과할 때
- 모든 컴파일러/린터 경고가 해결되었을 때
- 변경사항이 단일 논리적 작업 단위를 나타낼 때
- 커밋 전에는 반드시 사용자에게 메시지를 보여주고 승인을 받은 후 실행합니다.
- 디버깅 시에도 원인에 대해 필요한 분석을 충분히 수행합니다.
- 역시 분석 결과 및 시도할 방법을 먼저 설명하고 승인을 받은 다음 진행합니다.
- 에러 해결이 중요한 것이 아니라 제대로 동작하는 것이 중요합니다.
- 원인이 불분명할 경우 분석을 위해 상세 로그를 추가합니다.
- 필요한 경우 진행중인 작업을 위한 문서를 작성하고 진행상황을 기록하면서 작업합니다.
- 기술적인 용어나 라이브러리 이름 등은 원문을 유지합니다.
- 모르는 경우는 모른다고 답하고, 추가 조사가 필요하면 이를 언급합니다.
- 별도의 요청이 없으면 모든 응답은 한국어로 답합니다.
- 문서 작성시 간단한 다이어그램은 mermaid를, 복잡한 경우에는 svg 파일을 생성해서 포함시킵니다.
요기 참고했습니다. https://github.com/roboco-io/handson-vibecoding-demo/blob/main/global_windsurf_rules.md