스네이크 표기법
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
스네이크 표기법은 단어 사이를 밑줄(_)로 구분하는 명명 규칙으로, 주로 프로그래밍에서 변수, 함수 등의 식별자를 정의할 때 사용된다. C 언어에서 유래되었으며, 2004년 루비 커뮤니티에서 "snake_case"라는 용어가 처음 사용되었다. 다양한 프로그래밍 언어에서 사용되며, 특히 파이썬, 루비, 펄, PHP, R, Rust 등에서 널리 쓰인다.
더 읽어볼만한 페이지
- 대문자 사용 - 대소문자
대소문자는 문자를 표기하는 방식으로, 타이포그래피, 언어, 프로그래밍 등 다양한 분야에서 활용되며, 가독성 향상, 강조, 문자열 변환 등에 사용된다. - 대문자 사용 - 작은 대문자
작은 대문자는 텍스트 내 특정 요소 강조를 위해 사용되는 활자 스타일로, 출판, 언어학, 법률 문서, 컴퓨터 과학 등 다양한 분야에서 활용되며, 16세기 초부터 사용되어 OpenType 글꼴 표준과 유니코드에서도 지원된다. - 타이포그래피 - 팬그램
팬그램은 특정 문자 집합의 모든 문자를 최소 한 번 포함하는 문장이나 구절로, 완전 팬그램, 자기 열거 팬그램 등 여러 유형이 있으며, 다양한 언어에서 활용되고 수학적 연구 주제로도 다뤄진다. - 타이포그래피 - ß
ß(에스체트)는 독일어에서 긴 s와 s 또는 z의 합자에서 유래한 문자로, 특정 조건에서 무성음 /s/를 나타내며, 사용 범위가 축소되었으나 대문자 형태(ẞ)가 추가되어 표준 독일어에서 선택적으로 사용될 수 있다. - 표시 이름과 문서 제목이 같은 위키공용분류 - 라우토카
라우토카는 피지 비치레부섬 서부에 위치한 피지에서 두 번째로 큰 도시이자 서부 지방의 행정 중심지로, 사탕수수 산업이 발달하여 "설탕 도시"로 알려져 있으며, 인도에서 온 계약 노동자들의 거주와 미 해군 기지 건설의 역사를 가지고 있고, 피지 산업 생산의 상당 부분을 담당하는 주요 기관들이 위치해 있다. - 표시 이름과 문서 제목이 같은 위키공용분류 - 코코넛
코코넛은 코코넛 야자나무의 열매로 식용 및 유지로 사용되며, 조리되지 않은 과육은 100g당 354kcal의 열량을 내는 다양한 영양 성분으로 구성되어 있고, 코코넛 파우더의 식이섬유는 대부분 불용성 식이섬유인 셀룰로오스이며, 태국 일부 지역에서는 코코넛 수확에 훈련된 원숭이를 이용하는 동물 학대 문제가 있다.
| 스네이크 표기법 | |
|---|---|
| 개요 | |
| 유형 | 명명 규칙 |
| 사용 목적 | 컴퓨터 프로그래밍, 파일 명명 |
| 가독성 | 단어 사이에 밑줄을 사용하여 가독성을 높임 |
| 장점 | 가독성 향상 일관성 유지 다양한 프로그래밍 언어 및 운영체제에서 호환 |
| 표기법 | |
| 구성 요소 | 단어 밑줄 (_) |
| 특징 | 모든 단어를 소문자로 쓰고 단어 사이에 밑줄을 넣어 연결 |
| 예시 | hello_world, get_user_name |
| 사용 예시 | |
| 프로그래밍 언어 | Python C Ruby |
| 파일 이름 | image_001.jpg, my_document.txt |
| 장단점 | |
| 장점 | 가독성 향상: 단어 구분이 명확하여 긴 이름도 쉽게 읽을 수 있음 일관성 유지: 프로젝트 내에서 일관된 명명 규칙을 적용하여 코드 품질 향상 호환성: 다양한 프로그래밍 언어 및 운영체제에서 문제없이 사용 가능 |
| 단점 | 이름 길이 증가: 밑줄 때문에 이름이 길어질 수 있음 타이핑 불편함: CamelCase에 비해 Shift 키를 눌러야 하므로 타이핑이 다소 불편 |
| 기타 | |
| 관련 표기법 | 케밥 케이스 파스칼 케이스 카멜 케이스 |
2. 역사
밑줄을 단어 구분자로 사용하는 방식은 1960년대 후반으로 거슬러 올라간다. 이는 C와 관련이 있으며, 1978년에 출판된 ''The C Programming Language''에서도 이 표기법이 사용되었다. 당시에는 이 표기법에 대한 특정한 명칭이 없었으며, 파이썬 프로그래밍 언어 스타일 가이드에서는 단순히 "소문자\_밑줄"이라고 불렀다.[3]
유즈넷에서 "snake_case"라는 용어는 2004년 루비 커뮤니티에서 Gavin Kistner가 처음 사용하면서 널리 알려졌다.[4] 전 인텔 엔지니어인 Jack Dahlgren은 2002년에 인텔 사내에서 (혹은 마이크로소프트 엔지니어와의 대화에서) 이 용어를 사용했다고 한다.[30]
2015년 기준으로, 구분자로 단어를 나누는 여러 단어 식별자를 위한 명명 규칙에는 표준화된 이름이 없지만, lisp-case, kebab-case, SCREAMING_SNAKE_CASE 등과 같이 사용 빈도가 높아지는 용어들이 있다.[5][6][7]
2. 1. 명칭의 유래
밑줄을 단어 구분자로 사용하는 것은 1960년대 후반으로 거슬러 올라가며, 특히 C와 관련이 있다. ''The C Programming Language''(1978)에서 발견되었으며, 파스칼 표기법(일종의 낙타 표기법)과 대조된다. 하지만 이 관례는 전통적으로 특정 이름이 없었으며, 파이썬 프로그래밍 언어 스타일 가이드에서는 단순히 "소문자\_밑줄"이라고 불렀다.[3]유즈넷에서 snake_case라는 용어는 2004년 루비 커뮤니티에서 처음 사용되었는데,[4] Gavin Kistner는 다음과 같이 썼다.
> BTW...그 명명 스타일을 뭐라고 부르나요? snake_case? 누군가 저를 수정할 때까지 그렇게 부르겠습니다.
2002년에 전 Intel 엔지니어인 Jack Dahlgren이 Intel 사내에서 (그리고 아마도 Microsoft 엔지니어와의 대화 속에서) 이 용어를 사용했다고 한다.[30] 어쩌면 이 용어는 여러 커뮤니티에서 독자적으로 만들어졌을지도 모른다.
3. 사용 예시
스네이크 표기법은 여러 프로그래밍 언어에서 사용된다. 예를 들어 `snake_case`는 스네이크 표기법으로 작성된 올바른 예시이며, `is_snake_case`는 불린 타입 변수 이름으로 사용될 수 있다. 반면, `snakeCase`와 같이 카멜 표기법 형태로 작성된 변수명은 스네이크 표기법의 잘못된 예시이다.[3]
3. 1. 주요 사용 언어
다음은 관례적으로 스네이크 표기법을 사용하는 프로그래밍 언어 목록이다.| 언어 | 사용 |
|---|---|
| ABAP[8] | |
| Ada[9] | 첫 글자는 대문자로 표기 |
| C++, Boost[10] | |
| C | 표준 라이브러리의 일부 타입 이름에 사용 |
| Eiffel[11] | 클래스와 기능 이름에 사용 |
| Elixir[12] | 원자, 변수, 함수 이름에 사용 |
| Erlang[13] | 함수 이름에 사용 |
| GDScript[14] | 변수와 함수 이름에 사용 |
| Java[15] | 정적 final 상수와 열거형 값에 `SCREAMING_SNAKE_CASE` 사용 |
| Kotlin[16] | 상수와 열거형 값에 `SCREAMING_SNAKE_CASE` 사용 |
| Magik | |
| OCaml[17] | 값, 타입, 모듈 이름에 사용 |
| Perl[18] | 어휘 변수와 서브루틴에 사용 |
| Oracle SQL 및 PL/SQL[19] | 따옴표 없는 모든 식별자에 사용되며, 내부적으로 `SCREAMING_SNAKE_CASE`로 표현됨 |
| Prolog[20] | 원자와 변수에 모두 사용 |
| Python[3] | 변수 이름, 함수 이름, 메서드 이름, 모듈 또는 패키지 이름에 사용 |
| PHP | 클래스 상수에 `SCREAMING_SNAKE_CASE` 사용 |
| PL/I[21] | |
| R[22] | 변수 이름, 함수 이름, 인수 이름에 사용, 특히 tidyverse 스타일에서 많이 사용 |
| Ruby[23] | 변수와 메서드 이름에 사용 |
| Rust[24] | 변수 이름, 함수 이름, 메서드 이름, 모듈 이름, 매크로에 사용 |
| Tcl | |
| Terraform (소프트웨어)[25] | 리소스 및 변수에 사용 |
| Zig[26] | 변수에 사용 |
3. 2. 올바른 예시와 잘못된 예시
; 올바른 예시:: snake_case (Snake case로 쓰였다.)
: is_snake_case (Boolean 타입의 변수 이름)
; 잘못된 예시:
: snakeCase (카멜 표기법 형태로 지어진 변수명)
4. 다른 명명 규칙과의 비교
스네이크 표기법은 카멜 표기법 등 다른 명명 규칙들과 비교하여 가독성이 높다는 장점이 있다.
4. 1. 카멜 표기법 (Camel Case)
`snakeCase`는 카멜 표기법 형태로 지어진 변수명이며, 이는 잘못된 예시이다.[1]참조
[1]
서적
2010 IEEE 18th International Conference on Program Comprehension
http://www.cs.kent.e[...]
[2]
웹사이트
Snake Case
https://developer.mo[...]
2023-09-08
[3]
웹사이트
PEP 0008 -- Style Guide for Python Code
https://www.python.o[...]
2001-07-05
[4]
뉴스
Appropriate use of camelCase
https://groups.googl[...]
2015-08-13
[5]
웹사이트
StackOverflow – What's the name for snake_case with dashes?
https://stackoverflo[...]
[6]
웹사이트
Programmers – If this is camelCase what-is-this?
http://programmers.s[...]
2015-08-13
[7]
웹사이트
Camel_SNAKE-kebab
https://github.com/q[...]
2020-04-23
[8]
웹사이트
Naming Conventions in ABAP Objects
https://help.sap.com[...]
2020-07-28
[9]
웹사이트
Ada Programming Guidelines
https://sceweb.uhcl.[...]
[10]
웹사이트
Boost Library Requirements and Guidelines
http://www.boost.org[...]
2015-08-13
[11]
웹사이트
Eiffel Class and Feature Names
https://www.eiffel.o[...]
2019-12-28
[12]
웹사이트
Elixir Style Guide
https://github.com/n[...]
2020-05
[13]
웹사이트
Programming Rules
http://www.erlang.se[...]
2017-08-11
[14]
웹사이트
GDScript Style Guide
https://docs.godoten[...]
[15]
웹사이트
Code Conventions for the Java Programming Language – Naming Conventions
https://www.oracle.c[...]
Oracle
2021-08-03
[16]
웹사이트
Coding Conventions
https://kotlinlang.o[...]
2023-02-03
[17]
웹사이트
Xen wiki
https://wiki.xenproj[...]
2017-03-15
[18]
서적
Perl Best Practices
https://archive.org/[...]
O'Reilly Media Inc.
[19]
웹사이트
Quick Guide to Some Sources for Naming Conventions for Oracle Database Development
http://stevenfeuerst[...]
2020-12-30
[20]
간행물
Coding Guidelines for Prolog (v.3)
[21]
서적
IBM Operating System/360 PL/I: Language Specifications
https://bitsavers.or[...]
1965-07
[22]
서적
The tidyverse style guide
http://style.tidyver[...]
[23]
웹사이트
Ruby Naming Conventions
https://github.com/s[...]
2020-05
[24]
웹사이트
Naming – Rust API Guidelines
https://rust-lang-nu[...]
2019-10-27
[25]
웹사이트
Terraform Naming Conventions
https://www.terrafor[...]
2022-02
[26]
웹사이트
Documentation - The Zig Programming Language
https://ziglang.org/[...]
2024-03-10
[27]
서적
2010 IEEE 18th International Conference on Program Comprehension
http://www.cs.kent.e[...]
[28]
웹사이트
PEP 0008 -- Style Guide for Python Code
https://www.python.o[...]
2023-08-09
[29]
뉴스
Appropriate use of camelCase
https://groups.googl[...]
2015-08-13
[30]
웹사이트
What is the history of the term "snake case" (snake_case)?
https://www.quora.co[...]
2023-08-09
[31]
웹사이트
StackOverflow – What's the name for snake_case with dashes?
https://stackoverflo[...]
2023-08-09
[32]
웹사이트
Programmers – If this is camelCase what-is-this?
http://programmers.s[...]
2016-11-05
[33]
웹사이트
Camel_SNAKE-kebab
https://github.com/q[...]
2023-08-09
[34]
웹사이트
Naming Conventions in ABAP Objects
https://help.sap.com[...]
2020-07-28
[35]
웹사이트
Ada Programming Guidelines
https://sceweb.uhcl.[...]
2021-12-19
[36]
웹사이트
Boost Library Requirements and Guidelines
http://www.boost.org[...]
2015-08-13
[37]
웹사이트
Eiffel Class and Feature Names
https://www.eiffel.o[...]
2023-08-09
[38]
웹사이트
Elixir Style Guide
https://github.com/n[...]
2023-08-09
[39]
웹사이트
Programming Rules
http://www.erlang.se[...]
2017-08-11
[40]
웹사이트
GDScript Style Guide
https://docs.godoten[...]
2023-08-09
[41]
웹사이트
Code Conventions for the Java Programming Language – Naming Conventions
https://www.oracle.c[...]
Oracle
2021-08-03
[42]
웹사이트
Coding Conventions
https://kotlinlang.o[...]
2023-02-03
[43]
웹사이트
Xen wiki
https://wiki.xenproj[...]
2017-03-15
[44]
서적
Perl Best Practices
https://archive.org/[...]
O'Reilly Media Inc.
[45]
웹사이트
Quick Guide to Some Sources for Naming Conventions for Oracle Database Development
http://stevenfeuerst[...]
2020-12-30
[46]
논문
Coding Guidelines for Prolog (v.3)
[47]
서적
The tidyverse style guide
http://style.tidyver[...]
[48]
웹사이트
Ruby · Naming Convention
https://namingconven[...]
2023-08-09
[49]
웹사이트
Naming – Rust API Guidelines
https://rust-lang.gi[...]
2023-08-09
[50]
웹사이트
Terraform Naming Conventions
https://www.terrafor[...]
2023-08-09
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com