snp-batch-validation/.claude/rules/naming.md
htlee cfc80bbb0d feat: Gitea 팀 프로젝트 워크플로우 구조 적용
- .claude/rules/: 팀 정책, Git 워크플로우, 코드 스타일, 네이밍, 테스트 규칙
- .claude/skills/: init-project, sync-team-workflow, create-mr, fix-issue
- .claude/settings.json: deny 규칙 + hooks
- .claude/workflow-version.json: v1.2.0 적용
- .githooks/: commit-msg(grep -P→-E macOS 호환), pre-commit, post-checkout
- .editorconfig, .sdkmanrc, .mvn/settings.xml (Nexus 미러)
- .gitignore: .claude/ 팀 파일 추적 전환
- CLAUDE.md: 프로젝트 루트로 이동

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:00:24 +09:00

2.1 KiB

Java 네이밍 규칙

패키지

  • 모두 소문자, 단수형
  • 도메인 역순: com.gcsc.프로젝트명.모듈
  • 예: com.gcsc.batch.scheduler, com.gcsc.api.auth

클래스

  • PascalCase
  • 명사 또는 명사구
  • 접미사로 역할 표시:
계층 접미사 예시
Controller Controller UserController
Service Service UserService
Service 구현 ServiceImpl UserServiceImpl (인터페이스 있을 때만)
Repository Repository UserRepository
Entity (없음) User, ShipRoute
DTO 요청 Request CreateUserRequest
DTO 응답 Response UserResponse
설정 Config SecurityConfig
예외 Exception UserNotFoundException
Enum (없음) UserStatus, ShipType
Mapper Mapper UserMapper

메서드

  • camelCase
  • 동사로 시작
  • CRUD 패턴:
작업 Controller Service Repository
조회(단건) getUser() getUser() findById()
조회(목록) getUsers() getUsers() findAll()
생성 createUser() createUser() save()
수정 updateUser() updateUser() save()
삭제 deleteUser() deleteUser() deleteById()
존재확인 - existsUser() existsById()

변수

  • camelCase
  • 의미 있는 이름 (단일 문자 변수 금지, 루프 인덱스 i, j, k 예외)
  • boolean: is, has, can, should 접두사
    • 예: isActive, hasPermission, canDelete

상수

  • UPPER_SNAKE_CASE
  • 예: MAX_RETRY_COUNT, DEFAULT_PAGE_SIZE

테스트

  • 클래스: {대상클래스}Test (예: UserServiceTest)
  • 메서드: {메서드명}_{시나리오}_{기대결과} 또는 한국어 @DisplayName
    • 예: createUser_withDuplicateEmail_throwsException()
    • 예: @DisplayName("중복 이메일로 생성 시 예외 발생")

파일/디렉토리

  • Java 파일: PascalCase (클래스명과 동일)
  • 리소스 파일: kebab-case (예: application-local.yml)
  • SQL 파일: V{번호}__{설명}.sql (Flyway) 또는 kebab-case