6-keem
Gallery
About
© Powered by 6-keem

SpringBoot Code Convention

캡스톤디자인
2025년 02월 05일
4분

Code Convention

Series bookmark
  1. SpringBoot Code Convention
  2. Flutter Code Convention
  3. Flutter Architecture Guide
On this page
  • 1. 프로젝트 구조
  • 패키지 구조
  • 2. 네이밍 컨벤션
  • 1. 클래스/인터페이스
  • 2. 메소드
  • 3. 변수
  • 4. 상수
  • 3. 코드 포맷팅
  • 1. 들여쓰기
  • 2. 줄바꿈 및 공백
  • 4. 주석 작성
  • 1. 클래스/메소드 설명
  • 2. 인라인 주석
  • 3. TODO 주석
  • 5. 예외 처리
  • 1. 전역 예외 처리
  • 2. 커스텀 예외

이전 글이 없습니다
다음 포스트
Flutter Code Convention
thumbnail.png
SpringBoot Code Convention for 2025. Capstone Design

NAVER의 java 코딩 컨벤션을 따라 작성되었습니다.

Spring Boot 코드 컨벤션


1. 프로젝트 구조

패키지 구조

도메인 별로 패키지를 분리하여 관리합니다.
예시:

com.example.myapp
├── config        // 설정 관련 클래스
├── api           // API 관련 클래스
│   └── feature1
│       └──  Controller.java
│       └──  Service.java
│       └──  Repository.java
│   └── feature2
│       └──  Controller.java
│       └──  Service.java
│       └──  Repository.java
├── domain        // 엔티티 및 도메인 객체
├── dto           // 데이터 전송 객체
├── exception     // 예외 처리 관련 클래스
└── util          // 유틸리티 클래스

2. 네이밍 컨벤션

1. 클래스/인터페이스

PascalCase (첫 글자 대문자)
예: UserService, OrderController, ProductRepository

2. 메소드

camelCase (첫 글자 소문자)
예: createUser(), findAllProducts()

3. 변수

camelCase
예: userName, orderList

4. 상수

모두 대문자, 언더스코어로 단어 구분
예: MAX_CONNECTIONS, DEFAULT_PAGE_SIZE


3. 코드 포맷팅

1. 들여쓰기

Tab 또는 스페이스 4칸 사용

2. 줄바꿈 및 공백

각 클래스, 메소드, 필드 사이에 적절한 공백을 두어 가독성을 높입니다.
긴 줄은 100~120자 이내로 작성합니다.

예시:

@Service
public class UserService {
 
    private final UserRepository userRepository;
 
    // 생성자 주입
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
 
    public UserDto createUser(UserDto userDto) {
        // 사용자 생성 로직
        User user = new User(userDto.getName(), userDto.getEmail());
        userRepository.save(user);
        return new UserDto(user);
    }
}

4. 주석 작성

모든 주석은 한글 로 작성하여 팀원이 이해하기 쉽도록 합니다.

1. 클래스/메소드 설명

Javadoc 스타일 주석을 사용하여 클래스, 메소드의 역할과 사용법을 설명합니다.

2. 인라인 주석

코드의 복잡한 로직이나 주의사항이 있을 때 한 줄 주석(//)을 사용합니다.

3. TODO 주석

앞으로 개선하거나 추가할 사항이 있을 때 // TODO: 형식으로 남깁니다.

예시:

/**
 * 사용자 관련 비즈니스 로직을 처리하는 서비스 클래스.
 */
@Service
public class UserService {
    // ...
 
    /**
     * @param userDto 사용자 데이터 전달 객체
     * @return 생성된 사용자 정보를 담은 DTO
     */
    public UserDto createUser(UserDto userDto) {
        // TODO: 입력 값 검증 추가
        // 사용자 생성 로직
    }
}

5. 예외 처리

1. 전역 예외 처리

@ControllerAdvice를 활용하여 전역 예외 처리 로직을 작성합니다.

2. 커스텀 예외

비즈니스 로직에 맞는 커스텀 예외를 정의하여 사용합니다.

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
 
  public ResourceNotFoundException(String message) {
    super(message);
  }
}