Snake case
Snake case (or snake_case) is the practice of writing compound words or phrases in which the elements are separated with one underscore character (_) and no spaces, with each element's initial letter usually lowercased within the compound and the first letter either upper or lower case—as in "foo_bar" and "Hello_world". It is commonly used in computer code for variable names, and function names, and sometimes computer filenames.[1] At least one study found that readers can recognize snake case values more quickly than camel case.[2]
History
The use of underscores as word separators in identifiers in programming languages is old, dating to the late 1960s. It is particularly associated with C, being found in The C Programming Language (1978), and contrasted with Pascal case, an older term for camel case. However, the convention traditionally had no specific name: the Python style guide refers to it simply as "lower_case_with_underscores".[3]
The name "snake_case" comes from the Ruby community, where it was coined in 2004 by Gavin Kistner, writing:[4]
"BTW...what *do* you call that naming style? snake_case? That's what I'll call it until someone corrects me."
The name is evidently in line with camel case (as the subject of the message notes), continuing the animal theme with a long creature, low to the ground.
As of 2015 names for other delimiter-separated naming conventions for multiple-word identifiers have not been standardized, although some terms have increasing levels of usage, such as lisp-case, kebab-case, SCREAMING_SNAKE_CASE, etc.[5][6][7]
Examples of languages that use snake case as convention
- OCaml, for variable and function names
- C++, for the standard library[8] and Boost[9]
- Erlang, for function names
- Perl
- PHP, for functions, but not class methods. Older conventions were often using snake case for every type of identifiers, except classes and namespaces.
- Python, for variable names, function names, and method names[3]
- Ruby, for variable and function names[10]
- Rust, for variable and function names[11]
- Elixir, for variable and function names[12]
See also
- Camel case, more common in Java
- Kebab case, more common in LISP
- Naming convention (programming)
References
- ↑ e.g. in Python and Ruby; see Naming convention (programming)
- ↑ "An Eye Tracking Study on camelCase and under_score Identifier Styles".
- 1 2 Guido van Rossum, Barry Warsaw, Nick Coghlan (2001-07-05). "PEP 0008 -- Style Guide for Python Code".
- ↑ Gavin Kistner (2004-02-23). "Appropriate use of camelCase". Newsgroup: comp.lang.ruby. Usenet: HBn_b.379957$xy6.2073499@attbi_s02. Retrieved 2015-08-13.
- ↑ "StackOverflow - What's the name for snake_case with dashes?".
- ↑ "Programmers - If this is camelCase what-is-this?".
- ↑ "Camel_SNAKE-kebab".
- ↑ "Library Design Guidelines". Retrieved 2015-08-13.
- ↑ "Boost Library Requirements and Guidelines". Retrieved 2015-08-13.
- ↑ "Ruby Naming Conventions".
- ↑ "Rust Naming Conventions".
- ↑ "Elixir Style Guide".