네이밍 컨벤션

클래스, 메서드, DB, URL 등 전체 네이밍 규칙

마지막 수정: 2026-05

네이밍 컨벤션

전체 규칙 요약

대상규칙예시
Java 클래스PascalCaseUserService, BoardController
Java 메서드/변수camelCasegetUserById, isActive
상수UPPER_SNAKE_CASEMAX_RETRY_COUNT
DB 테이블/컬럼UPPER_SNAKE_CASET_USER, USER_NM
REST URLkebab-case (소문자)/api/user-posts/get
TS/JS 함수camelCasegetUserById, handleClick
CSS 클래스kebab-casenav-link, sidebar-item
패키지소문자com.{회사명}.{프로젝트명}.user
.md 파일kebab-casenaming-convention.md

메서드 네이밍 동사 규칙

성격Java 메서드명MyBatis ID
조회getget
목록조회getListgetList
전체 수getTotalCountgetTotalCount
데이터 수getCountgetCount
등록registregist
수정updateupdate
삭제deletedelete
저장savesave
취소cancel-
확인confirm-

DB 테이블/컬럼 네이밍

테이블명과 컬럼명은 UPPER_SNAKE_CASE를 사용한다.

-- 테이블명: T_ 접두사 + UPPER_SNAKE_CASE
CREATE TABLE T_USER (
    USER_SN        NUMBER        NOT NULL,  -- PK
    USER_ID        VARCHAR2(50)  NOT NULL,
    USER_NM        VARCHAR2(100) NOT NULL,
    USER_EMAIL     VARCHAR2(200),
    DEPT_SN        NUMBER,                  -- FK
    USE_YN         CHAR(1)       DEFAULT 'Y',  -- Boolean
    REG_DT         TIMESTAMP WITH TIME ZONE,
    UPD_DT         TIMESTAMP WITH TIME ZONE,
    PRIMARY KEY (USER_SN)
);
패턴규칙
테이블명T_ 접두사 + UPPER_SNAKE_CASE
PK{테이블명}_SN (SEQUENCE 사용)
FK{참조테이블명}_SNUSER_SN, DEPT_SN
Boolean_YN 접미사 → USE_YN, DEL_YN
인덱스명IDX_{테이블명}_{컬럼명}

VO 네이밍

// 단일 VO: [업무명]Vo
public class UserVo extends GeneralVO { ... }
public class BoardVo extends GeneralVO { ... }
public class ReservationVo extends GeneralVO { ... }

상수 관리

public final class UserConstant {
    private UserConstant() {}

    public static final String STATUS_ACTIVE   = "Y";
    public static final String STATUS_INACTIVE = "N";
    public static final int    MAX_LOGIN_RETRY = 5;
}

하드코딩 금지 대상:

  • 상태값 ("Y", "N", "A")
  • 메시지 문자열
  • 숫자 매직 넘버
  • API URL
  • 파일 경로

패키지 구조

com.{회사명}.{프로젝트명}
├── {업무명}/
│   ├── controller/
│   ├── service/
│   ├── mapper/
│   └── vo/
└── common/
    ├── config/
    ├── exception/
    ├── util/
    └── vo/

CSS 클래스 네이밍 (BEM-like)

.sidebar {}              /* 블록 */
.sidebar-item {}         /* 요소 */
.sidebar-item--active {} /* 변형 */
.nav-link {}
.nav-link.active {}      /* 상태 */

파일 네이밍

종류규칙예시
Java 클래스PascalCaseUserController.java
Thymeleaf 템플릿kebab-caseuser-list.html
CSS/JSkebab-caseguide.css, guide.js
.md 문서kebab-casenaming-convention.md
MyBatis XMLPascalCase + MapperUserMapper.xml