스프링 팀 프로젝트 진행하면서 처음으로 코드 컨벤션 활용해보았다. 프로젝트를 시작하기 전 가장 중요한 점이 바로 일관적인 코드가 유지될 수 있도록 하는 것이다.
이는 코드 관점에서는 아키텍처와 규칙이 될 수 있겠고 컨벤션 관점에서는 포맷팅이 있을 수 있다.
스프링 프로젝트를 하면서Java Project, Method, Exception Handling, File Structure, ERD Database, API 명세서(URI), REST API, 주석 등 각각의 명명법을 정했다.
코드 컨벤션이란
- 코드 스타일 (네이밍 규칙, 들여쓰기, 코드 정렬 방식 등)
- 팀 협업에 있어서 컨벤션을 지키면 팀 프로젝트에 코드의 일관성을 유지하기 좋을 뿐만 아니라 읽기도 수월해진다.
(참고로 표준은 없다. 세세한 부분은 회사마다 혹은 팀마다, 사람마다, 나라마다, 문화마다 다르기에 정답은 없다.)
✔ 코드 컨벤션의 주요 요소
- 네이밍 컨벤션(Naming Convention) → 변수, 메서드, 클래스 등의 이름 짓는 규칙
- 코드 스타일(Code Style) → 들여쓰기, 공백, 중괄호 {} 위치
- 주석 스타일(Commenting Style) → Javadoc, TODO 주석 등
- 파일 구조(File Structure) → 패키지 구성, 클래스 배치 순서
- 예외 처리(Exception Handling) → 예외를 어떻게 처리할 것인지 규칙
코드 컨벤션 주요 요소 중 하위 개념인 네이밍 컨벤션(Naming Convention)을 다뤄보도록 하겠다
✔ 네이밍 컨벤션이란
- 변수, 함수, 클래스 등 코드를 작성할 때 일관성 있고 가독성 높은 이름을 정의하기 위한 규칙
- 팀원 간의 협업을 원활하게 진행 할 수 있다.
- 4가지 Case가 존재 - camelCase, PascalCase, snake_case, kebab-case
✔ 네이밍 컨벤션 예시
| 네이밍 대상 | 네이밍 컨벤션 | 예시 |
| 변수 & 메서드 | camelCase | userName, getUserData() |
| 클래스 & 인터페이스 | PascalCase | UserService, OrderRepository |
| 상수 | UPPER_SNAKE_CASE | MAX_RETRY_COUNT |
| 패키지명 | lowercase.with.dots | com.example.project.service |
| DB 테이블 & 컬럼 | snake_case | user_table, order_date |
| API URL | kebab-case | /api/v1/user-info |
네이밍 컨벤션에 4가지 Case가 존재한다.
1. camelCase
- 정의: 첫 글자는 소문자, 그 이후 단어의 첫 글자는 대문자
- 사용 용도: 변수명, 메서드명 등에서 사용
- 예시:
- firstName, getUserData(), totalAmount
규칙: 첫 번째 단어는 소문자, 이후 각 단어는 첫 글자만 대문자로
2. PascalCase
- 정의: 각 단어의 첫 글자를 대문자로 작성
- 사용 용도: 클래스 이름, 인터페이스 이름 등에서 사용
- 예시:
- UserService, OrderController, PaymentGateway
규칙: 모든 단어의 첫 글자는 대문자
3. snake_case
- 정의: 모든 글자는 소문자로, 단어 사이를 언더스코어(_)로 구분
- 사용 용도: 파일 이름, 변수명, 리소스 파일 등에서 사용
- 예시:
- max_retry_count, user_name, order_details
규칙: 모든 단어는 소문자로 작성하고, 단어 사이에 언더스코어(_)를 사용
4. kebab-case
- 정의: 모든 글자는 소문자로, 단어 사이를 하이픈(-)으로 구분
- 사용 용도: URL 경로, 슬러그(slug) 등에서 사용
- 예시:
- user-profile, order-details, product-list
규칙: 모든 단어는 소문자로 작성하고, 단어 사이에 하이픈(-)을 사용
정리
| 케이스 | 정의 | 사용 예시 |
| camelCase | 첫 글자는 소문자, 이후 단어 첫 글자는 대문자 | firstName, getUserData(), totalAmount |
| PascalCase | 각 단어의 첫 글자는 대문자 | UserService, OrderController, PaymentGateway |
| snake_case | 모든 글자는 소문자, 단어 사이에 언더스코어(_) 사용 | max_retry_count, user_name, order_details |
| kebab-case | 모든 글자는 소문자, 단어 사이에 하이픈(-) 사용 | user-profile, order-details, product-list |
마지막으로 스프링 관련 컨벤션은 밑에 링크들을 참고하길 추천한다.
[Guide]스프링 네이밍 컨벤션(Coding convention)
▶ Controller - 컨트롤러 클래스 안에서 메서드 명을 작성 할 때는 아래와 같은 접미사를 붙인다. orderList() – 목록 조회 유형의 서비스 orderDetails() – 단 건 상세 조회 유형의 controller 메서드 orderSav
cocobi.tistory.com
https://javamin.tistory.com/entry/%ED%85%8C%EC%8A%A4%ED%8A%B8
코드 컨벤션 작성규칙 (Coding Conventions) for Spring(Java)
이번엔... 사내에서 스프링 관련하여, 인프라 재구성을 위해서.. 컨벤션 등 소스들을 재정비하는 시간을 가지기로.. 했는데여기저기 필요한 내용들 작성규칙 참조해서 붙여보니 아래처럼 만들었
blog.mingty.com