이상적인 자바 스프링(Spring) 프로젝트의 코딩 스타일 가이드는 읽기 쉽고 유지보수가 용이한 코드를 작성하도록 돕는 원칙과 규칙을 포함합니다. 아래는 자바 스프링 프로젝트에서 권장되는 코딩 스타일 가이드입니다.
1. 코드 포맷팅
- 들여쓰기: 4칸 스페이스를 사용합니다. (탭 대신 스페이스 권장)
- 라인 길이: 한 줄에 120자를 넘지 않도록 제한합니다.
- 중괄호 스타일: 항상 열고 닫는 중괄호를 사용합니다.
- 빈 줄 사용: 적절한 위치에 빈 줄을 추가해 가독성을 높입니다. 예: 메서드 사이, import와 클래스 선언 사이.
2. 네이밍 규칙
- 패키지명: 모두 소문자, 점(.)으로 구분.
- 클래스명: 파스칼 케이스(PascalCase), 명사를 사용.
- 메서드명: 카멜 케이스(camelCase), 동사 또는 동사구를 사용.
- 상수명: 모두 대문자, 단어 사이에 밑줄(_).
- 변수명: 카멜 케이스(camelCase), 간결하고 의미 있는 이름.
3. 주석 작성
- 클래스 및 메서드 주석: Javadoc 스타일 사용.
- 필요한 곳에만 주석: 명확한 코드에는 불필요한 주석을 피하고, 복잡한 로직에는 설명을 추가합니다.
4. 프로젝트 구조
- 레이어 분리: 다음과 같이 각 레이어를 분리합니다.
- Controller: HTTP 요청/응답 처리.
- Service: 비즈니스 로직.
- Repository: 데이터베이스 처리.
- Domain/Model: 엔티티 및 데이터 모델 정의.
- 패키지 구조 예시:
5. Spring 어노테이션 사용
- 필수 어노테이션만 사용: 불필요한 어노테이션은 피합니다.
- @RestController 대신 @Controller와 @ResponseBody 조합 사용 지양.
- @Transactional은 필요한 메서드에만 사용.
- 의존성 주입: 필드 주입 대신 생성자 주입 권장.
6. 예외 처리
- Custom Exception: 비즈니스 로직에 맞는 커스텀 예외를 정의.
- Global Exception Handler: @ControllerAdvice를 활용해 전역 예외 처리.
7. 테스트
- JUnit5: 최신 테스트 프레임워크를 활용.
- 테스트 클래스 네이밍:
{테스트 대상 클래스명}Test. - 테스트 메서드 네이밍: 메서드 동작을 설명하는 이름 사용.
8. 기타 권장 사항
- Lombok 사용: @Getter, @Setter, @Builder, @AllArgsConstructor 등 활용.
- DTO와 엔티티 분리: API 요청/응답에는 DTO(Data Transfer Object)를 사용하고, 엔티티는 비즈니스 로직에서만 사용.
- 스프링 설정 파일:
application.yml또는application.properties로 환경 변수 관리.- 설정값은 의미 있는 키를 사용.
