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 camelCase.[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 CamelCase. 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 by contrast with CamelCase (as the subject of the message notes), continuing the animal theme with a long creature, low to the ground.
As of 2015[update] there are no standard names for other delimiter-separated naming conventions for multiple-word identifiers, though there are various terms with limited 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
- Rust, for variable and function names[10]
- Elixir, for variable and function names[11]
See also
References
- ^ e.g. in Python and Ruby; see Naming convention (programming)
- ^ "An Eye Tracking Study on camelCase and under_score Identifier Styles".
- ^ a b "PEP 0008 -- Style Guide for Python Code". 2001-07-05.
{{cite web}}
: Unknown parameter|authors=
ignored (help) - ^ Gavin Kistner (2004-02-23). "Appropriate use of camelCase". Newsgroup: comp.lang.ruby. Usenet: HBn_b.379957$xy6.2073499@attbi_s02. Retrieved August 13, 2015.
- ^ "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 August 13, 2015.
- ^ "Boost Library Requirements and Guidelines". Retrieved August 13, 2015.
- ^ "Rust Naming Conventions".
- ^ "Elixir Style Guide".