- CLAUDE.md: Java/Spring Boot/Maven 프로젝트 가이드 - .claude/settings.json: Maven 빌드 도구 권한 설정 - .claude/rules/: Java 코드 스타일, 네이밍, 테스트 규칙 - .githooks/pre-commit: Maven 컴파일 검증 - .mvn/settings.xml: Nexus 프록시 레포지토리 미러 - .sdkmanrc: JDK 17 버전 고정
61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# 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
|