Snake case
Page Module:Message box/ambox.css has no content.

Snake case (sometimes stylized autologically as snake_case) is the naming convention in which each space is replaced with an underscore (_) character, and words are written in all lower case. It is a commonly used naming convention in computing, for example for variable and subroutine names, and for filenames. One study has found that readers can recognize snake case values more quickly than camel case. However, "subjects were trained mainly in the underscore style", so the possibility of bias cannot be eliminated.[1]
A variation is screaming snake case, where words are written in all caps (stylized as SCREAMING_SNAKE_CASE).[2] This convention is used for constants in programming languages like C/C++, Python, Java, PHP, as well as for environment variables.
History
The use of underscores as word separators dates back to the late 1960s. It is particularly associated with C, is found in The C Programming Language (1978), and contrasted with pascal case (a type of camel case). However, the convention traditionally had no specific name: the Python programming language style guide refers to it simply as "lower_case_with_underscores".[3]
Within Usenet the term snake_case was first seen in the Ruby community in 2004,[4] used by Gavin Kistner, writing:
Page Template:Blockquote/styles.css has no content.
BTW...what *do* you call that naming style? snake_case? That's what I'll call it until someone corrects me.
As of 2015[update], 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, and more.[5][6][7]
Examples
The following programming languages use snake case by convention:
- ABAP[8]
- Ada, with initial letters also capitalized[9]
- C++ Standard Library and Boost for symbols.[10] C++ does not have a widely agreed-upon naming convention for classes and functions by its wider community.
- C, for some type names in the standard library, and since C11, in some function names.
- Eiffel, for class and feature names[11]
- Elixir, for atom, variable, and function names[12]
- Erlang, for function names[13]
- GDScript, for variable and function names[14]
- Java uses SCREAMING_SNAKE_CASE for static final constants and enum values.[15]
- Kotlin uses SCREAMING_SNAKE_CASE for constants and enum values[16]
- Magik
- OCaml, for value, type, and module names[17]
- Perl, for lexical variables and subroutines[18]
- Oracle SQL and PL/SQL,[19] for all unquoted identifiers (tables, columns, indexes, constraints, PL/SQL variables, constants, procedures/functions, triggers,...), although not official by Oracle itself, still recommended by the majority of known "influencers" and used throughout the official Oracle documentation
- All unquoted snake_case identifiers are actually internally represented as SCREAMING_SNAKE_CASE identifiers.
- Prolog, for both atoms (predicate names, function names, and constants) and variables[20]
- Python, for variable names, function names, method names, and module or package (i.e. file) names[3]
- PHP uses SCREAMING_SNAKE_CASE for class constants
- PL/I[21]
- R, for variable names, function names, and argument names, especially in the tidyverse style[22]
- Ruby, for variable and method names[23]
- Rust, for variable names, function names, method names, module names, and macros[24]
- Tcl
- Terraform (software), for resources and variables[25]
- Zig, for variables[26]
See also
- Camel case, more common in Java and C#
- Kebab case, with hyphens instead of underscores, more common in LISP
- Naming convention (programming)
References
Page Template:Reflist/styles.css has no content.
- ^ Page Module:Citation/CS1/styles.css has no content.Sharif, Bonita; Maletic, Jonathan I. (2010). "An Eye Tracking Study on camelCase and under_score Identifier Styles". 2010 IEEE 18th International Conference on Program Comprehension (PDF). pp. 196–205. CiteSeerX 10.1.1.421.6137. doi:10.1109/ICPC.2010.41. ISBN 978-1-4244-7604-6. S2CID 14170019.
- ^ Page Module:Citation/CS1/styles.css has no content."Snake Case". Mozilla Developer Network. 8 September 2023. Retrieved November 10, 2023.
- ^ a b Page Module:Citation/CS1/styles.css has no content.Guido van Rossum; Barry Warsaw; Nick Coghlan (2001-07-05). "PEP 0008 -- Style Guide for Python Code".
- ^ Page Module:Citation/CS1/styles.css has no content.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.
- ^ Page Module:Citation/CS1/styles.css has no content."What's the name for snake_case with dashes?". Stack Overflow. Archived from the original on 2014-12-26. Retrieved 2016-07-25.
- ^ Page Module:Citation/CS1/styles.css has no content."Programmers – If this is camelCase what-is-this?". Archived from the original on 2016-08-07. Retrieved 2015-08-13.
- ^ Page Module:Citation/CS1/styles.css has no content."Camel_SNAKE-kebab". GitHub. 23 April 2020.
- ^ Page Module:Citation/CS1/styles.css has no content."Naming Conventions in ABAP Objects". help.sap.com. Retrieved 2020-07-28.
- ^ Page Module:Citation/CS1/styles.css has no content."Ada Programming Guidelines".
- ^ Page Module:Citation/CS1/styles.css has no content."Boost Library Requirements and Guidelines". Retrieved 2015-08-13.
- ^ Page Module:Citation/CS1/styles.css has no content."Eiffel Class and Feature Names". 28 December 2019.
- ^ Page Module:Citation/CS1/styles.css has no content."Elixir Style Guide". GitHub. May 2020.
- ^ Page Module:Citation/CS1/styles.css has no content."Programming Rules". Archived from the original on 2010-09-04. Retrieved 2017-08-11.
- ^ Page Module:Citation/CS1/styles.css has no content."GDScript Style Guide — Godot Engine (3.0) documentation in English". docs.godotengine.org.
- ^ Page Module:Citation/CS1/styles.css has no content."Code Conventions for the Java Programming Language – Naming Conventions". Oracle. Retrieved 2021-08-03.
- ^ Page Module:Citation/CS1/styles.css has no content."Coding Conventions". Retrieved 2023-02-03.
- ^ Page Module:Citation/CS1/styles.css has no content."Xen wiki". Retrieved 2017-03-15.
- ^ Page Module:Citation/CS1/styles.css has no content.Damian Conway (2005). Perl Best Practices. O'Reilly Media Inc. p. 44. ISBN 978-0-596-00173-5.
- ^ Page Module:Citation/CS1/styles.css has no content."Quick Guide to Some Sources for Naming Conventions for Oracle Database Development". stevenfeuersteinonplsql.blogspot.com. Retrieved 2020-12-30.
- ^ Page Module:Citation/CS1/styles.css has no content.Michael A. Covington; Roberto Bagnara; Richard A. O'Keefe; Jan Wielemaker; Simon Price (2009). "Coding Guidelines for Prolog (v.3)". p. 14. arXiv:0911.2899 [cs.PL].
- ^ Page Module:Citation/CS1/styles.css has no content.IBM (July 1965). IBM Operating System/360 PL/I: Language Specifications (PDF). p. 16. Retrieved November 12, 2023.
- ^ Page Module:Citation/CS1/styles.css has no content.Wickham, Hadley. The tidyverse style guide.
- ^ Page Module:Citation/CS1/styles.css has no content."Ruby Naming Conventions". GitHub. May 2020.
- ^ Page Module:Citation/CS1/styles.css has no content."Naming – Rust API Guidelines". Archived from the original on 2018-09-16. Retrieved 2019-10-27.
- ^ Page Module:Citation/CS1/styles.css has no content."Terraform Naming Conventions". Feb 2022.
- ^ Page Module:Citation/CS1/styles.css has no content."Documentation - The Zig Programming Language". Retrieved 2024-03-10.
External links
Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.