한글은 자음과 모음을 조합해 하나의 음절 블록으로 묶어 쓰는 문자 체계로, 애초에 대문자와 소문자라는 구분 자체가 존재하지 않습니다. 이 구분은 라틴 문자, 키릴 문자, 그리스 문자 등 일부 문자 체계에서만 나타나는 특징이며, 한글 자체에는 "케이스를 변환한다"는 개념이 적용될 여지가 없습니다. 한국 개발자들이 코드에서 camelCase나 PascalCase를 쓸 때는 실제로는 로마자 표기(국어의 로마자 표기법)로 옮긴 식별자를 다루는 것입니다.
주요 스타일
- camelCase — 첫 단어는 소문자, 이후 각 단어는 대문자로 시작하며 구분자 없음:
userName. JavaScript, Java, C#에서 변수와 함수의 표준. - PascalCase — 동일하지만 첫 단어도 대문자로 시작:
UserName. 거의 모든 곳에서 클래스와 컴포넌트에 사용. - snake_case — 단어를 밑줄로 연결하며 모두 소문자:
user_name. Python과 데이터베이스 컬럼명의 표준. - kebab-case — 단어를 하이픈으로 연결:
user-name. URL에서는 밑줄이 덜 흔하기 때문에 URL, CSS 클래스, HTML 속성의 표준.
단순한 미적 문제가 아닌 이유
"사용자이름" 같은 한글 단어를 코드 식별자에 그대로 쓰는 경우는 드물고, 대부분 userName처럼 영어나 로마자 표기로 바꾼 뒤에 케이스 스타일을 적용합니다. 즉 케이스 변환은 한글 자체가 아니라, 한글이 표현하는 개념을 영어나 로마자로 옮긴 뒤의 식별자에 대해서만 의미를 가진다는 점이 라틴 문자권 언어들과 근본적으로 다릅니다.
이 변환이 필요한 이유
- JSON API 필드(보통 camelCase)를 데이터베이스 컬럼명(보통 snake_case)에 매핑하기.
- 서로 다른 관례를 가진 언어 간에 코드를 옮길 때 변수명 바꾸기.
- 로마자로 옮긴 제목 텍스트에서 URL이나 CSS 클래스에 적합한 이름 생성하기.
약어로 인한 모호함
userID나 XMLParser 같은 식별자는 변환기에게 선택을 강요합니다: 약어를 하나의 "단어"로 볼 것인가, 아니면 개별 글자로 나눌 것인가. 도구마다 이를 다르게 처리하는데, 이 변환기는 연속된 대문자를 하나의 단어 단위로 인식합니다(XMLParser → XML + Parser). 다만 결과가 곧바로 프로덕션 코드에 들어간다면 수동으로 확인하는 것이 좋습니다.