alltools.one
Programming
2026-02-25
9 min
alltools.one Team
naming-conventionsprogrammingcamelcasesnake-casecoding-style

프로그래밍의 네이밍 컨벤션 — camelCase, snake_case, 그리고 그 너머

처음으로 코드베이스를 열었을 때 같은 파일에서 getUserName, get_user_name, GetUserName을 모두 발견합니다. 즉시 무언가 잘못되었다는 것을 알 수 있습니다. 네이밍 컨벤션은 팀에서 일하기 전까지는 사소해 보이지만, 그 순간부터 필수적인 것이 됩니다.

일관된 명명은 개인적인 선호의 문제가 아닙니다. 다음에 그 코드를 만질 사람 — 종종 6개월 후의 자기 자신 — 이 읽을 수 있게 만드는 것입니다.

네이밍 컨벤션이 중요한 이유

프로젝트에 일관된 명명이 없으면 세 가지가 무너집니다:

  • 가독성이 떨어진다 — 변수 스타일이 몇 줄마다 바뀌면 두뇌가 로직을 이해하는 대신 형식을 파싱하는 데 사이클을 낭비합니다
  • 팀 협업이 분열된다 — 풀 리퀘스트가 내용이 아닌 스타일에 대한 전쟁터가 됩니다. 예측 가능한 패턴이 없어 새로운 개발자 온보딩에 시간이 더 걸립니다
  • 도구가 제대로 작동하지 않는다 — 린터, 자동완성, 코드 생성기, 리팩토링 도구 모두 예측 가능한 명명 패턴에 의존합니다

어떤 컨벤션을 선택하느냐보다 하나를 선택하고 그것을 지키는 것이 훨씬 중요합니다. 일관된 snake_case가 있는 코드베이스가 세 가지 다른 스타일을 혼합한 것보다 무한히 좋습니다.

네이밍 컨벤션 완전 가이드

camelCase

첫 번째 단어는 소문자이고 이후 각 단어는 대문자로 시작합니다. 구분자가 없습니다.

// JavaScript / TypeScript
const userName = "Alice";
let itemCount = 42;
function getUserProfile(userId) {
  return fetchData(`/users/${userId}`);
}

사용되는 곳: JavaScript, TypeScript, Java는 변수, 함수명, 메서드명에 camelCase를 사용합니다. Swift에서도 로컬 변수와 함수 매개변수의 기본값입니다.

PascalCase

모든 단어가 대문자로 시작합니다. UpperCamelCase라고도 합니다.

// TypeScript / C#
class UserProfile {
  firstName: string;
  lastName: string;
}

interface DatabaseConnection {
  host: string;
  port: number;
}

// React 컴포넌트
function NavigationBar({ items }: NavProps) {
  return <nav>{/* ... */}</nav>;
}

사용되는 곳: C#은 공개 항목 거의 전부에 PascalCase를 사용합니다 — 클래스, 메서드, 속성. TypeScript와 JavaScript는 클래스, 인터페이스, 타입 별칭, 열거형에 사용합니다. React는 JSX가 컴포넌트와 HTML 요소를 구분해야 하기 때문에 컴포넌트 이름에 PascalCase를 의무화합니다.

Go에서 PascalCase는 특별한 의미를 갖습니다: 대문자로 시작하는 식별자는 내보내기(공개)됩니다.

snake_case

모든 단어가 소문자이고 밑줄로 구분됩니다.

# Python
user_name = "Alice"
item_count = 42

def get_user_profile(user_id):
    return fetch_data(f"/users/{user_id}")

class UserProfile:
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name

사용되는 곳: Python은 클래스 이름을 제외한 거의 모든 것에 snake_case를 사용합니다. Ruby도 같은 패턴을 따릅니다. Rust는 변수, 함수, 모듈에 snake_case를 사용합니다. 데이터베이스 스키마는 거의 보편적으로 테이블과 컬럼 이름에 snake_case를 사용합니다.

SCREAMING_SNAKE_CASE

전부 대문자에 밑줄 구분. 절대 변경해서는 안 되는 상수와 값에 예약되어 있습니다.

// 대부분의 언어에서의 상수
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = "https://api.example.com";
const DEFAULT_TIMEOUT_MS = 5000;

사용되는 곳: 거의 모든 언어가 상수에 SCREAMING_SNAKE_CASE를 사용합니다. 전체 대문자 형식은 "이 값을 재할당하지 마세요"라는 보편적인 신호입니다.

kebab-case

전부 소문자에 하이픈을 구분자로 사용.

/* CSS 클래스 이름 */
.navigation-bar {
  background-color: #1a1a2e;
}

.user-profile-card {
  border-radius: 8px;
}
# CLI 플래그
npm install --save-dev eslint
git commit --no-verify

사용되는 곳: CSS와 HTML은 kebab-case를 강력히 선호합니다. URL 슬러그에 사용됩니다. CLI 도구와 커맨드라인 플래그도 이를 따릅니다.

대부분의 프로그래밍 언어에서 하이픈이 빼기 연산자로 해석되므로 kebab-case를 변수 이름에 사용할 수 없습니다.

dot.case

단어를 점으로 구분합니다.

// Java 패키지 이름
package com.example.userservice.controllers;

import org.springframework.boot.SpringApplication;

사용되는 곳: Java 패키지 명명, 파일 확장자, Spring Boot 등의 프레임워크 설정 속성 키.

Title Case

각 주요 단어가 대문자로 시작합니다. "and", "the", "of" 같은 부차적인 단어는 구문을 시작하지 않는 한 소문자로 유지됩니다.

사용되는 곳: UI 제목, 페이지 타이틀, 메뉴 항목, 문서 섹션, 고유 명사.

path/case

단어를 슬래시로 구분하며 파일 시스템이나 네임스페이스 컨벤션을 따릅니다.

사용되는 곳: 파일 시스템 경로, 모듈 경로, 네임스페이스 계층, URL 라우팅 구조.

언어별 컨벤션 표

언어변수 / 함수클래스 / 타입상수파일
JavaScript / TypeScriptcamelCasePascalCaseSCREAMING_SNAKE_CASEkebab-case 또는 camelCase
Pythonsnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
GocamelCase (비공개)PascalCase (공개)PascalCase 또는 ALL_CAPSsnake_case
Rustsnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
JavacamelCasePascalCaseSCREAMING_SNAKE_CASEPascalCase
C#camelCase (비공개)PascalCase (공개)PascalCasePascalCase
Rubysnake_casePascalCaseSCREAMING_SNAKE_CASEsnake_case
CSSkebab-casekebab-case
SQLsnake_case (컬럼)대문자 (키워드)snake_case
PHPcamelCasePascalCaseSCREAMING_SNAKE_CASEPascalCase

흔한 실수와 해결 방법

1. 같은 스코프에서 컨벤션 혼합

// ❌ 비일관적
const user_name = "Alice";
const itemCount = 42;
const MaxRetries = 3;

// ✅ 일관된 camelCase
const userName = "Alice";
const itemCount = 42;
const maxRetries = 3;

2. 언어에 맞지 않는 컨벤션 사용

# ❌ Python에서 camelCase 사용
def getUserProfile(userId):
    userName = fetchUser(userId)
    return userName

# ✅ Python이 기대하는 snake_case 사용
def get_user_profile(user_id):
    user_name = fetch_user(user_id)
    return user_name

3. 약어와 두문자어

// ❌ 두문자어 처리 비일관
const XMLParser = new XmlParser();
const htmlToJSON = convert(HTMLString);

// ✅ 두문자어를 단어로 처리
const xmlParser = new XmlParser();
const htmlToJson = convert(htmlString);

4. is/has/can 접두사 없는 불리언 이름

// ❌ 모호한 불리언
const active = true;

// ✅ 명확한 불리언 의도
const isActive = true;

컨벤션 간 자동 변환

언어를 넘나들며 작업할 때 네이밍 컨벤션을 수동으로 변환하는 것은 지루하고 오류가 발생하기 쉽습니다.

우리의 문자열 케이스 변환기가 이를 자동으로 처리합니다. 아무 식별자나 붙여넣고 한 번의 클릭으로 camelCase, PascalCase, snake_case, kebab-case 등으로 변환하세요.

관련 글


네이밍 컨벤션을 자동으로 변환할 준비가 되셨나요? 문자열 케이스 변환기를 사용해 보세요 — 아무 식별자나 붙여넣고 camelCase, snake_case, PascalCase, kebab-case 등으로 변환하세요. 가입 불필요, 서버로 데이터 전송 없음, 완전 무료.

Published on 2026-02-25
Naming Conventions — camelCase, snake_case Guide | alltools.one