Ormnotation
Ormnotation[källa behövs] (engelska: snake_case) är sättet att skriva sammansatta ord eller fraser i vilka elementen är åtskilda med ett understreckstecken (_) och inga blanksteg, där varje elements inledande bokstav vanligtvis är gemen och den första bokstaven antingen är versal eller gemen—som i ”foo_bar” och ”Hello_world”. Det används vanligtvis i källkod för variabelnamn och funktionsnamn, och ibland även för filnamn.
Historia
Användningen av understreck som ordavskiljare i identifierare i programmeringsspråk är gammal, och dateras till slutet av 1960-talet. Det är särskilt förknippat med C, så som det skrivs i boken The C Programming Language (1978), och i motsats till Pascal (som använder en typ av kamelnotation). Konventionen hade emellertid traditionellt inget specifikt namn: stilguiden för Python refererar helt enkelt till notationen som lower_case_with_underscores ("gemener_med_understreck").[1]
På Usenet sågs ormnotation först inom Ruby-gemenskapen 2004, då Gavin Kistner skrev:[2]
” | BTW...what *do* you call that naming style? snake_case? That's what I'll call it until someone corrects me. (ungefär "Förresten... Vad *kallar* man den namngivningsstilen? Ormnotation? Det är vad jag kommer att kalla den fram tills att någon rättar mig.") | „ |
En tidigare Intel-ingenjör, Jack Dahlgren, har dock sagt på Quora att han använde termen internt hos Intel (och kanske i dialog med Microsoft-ingenjörer) 2002[3]. Det är möjligt att samma term har utvecklats oberoende i mer än en gemenskap.
2015 har namnen på namngivningskonventioner för identifierare med flera ord ännu inte standardiserats, även om vissa termer åtnjuter ökad användning, så som lispnotation, kebabnotation, SKRIKANDE_ORMNOTATION, etc.[källa behövs]
Exempel på språk som av hävd använder ormnotation
- OCaml, för värden, typ- och modulnamn [4]
- ABAP
- C, för standardbiblioteket
- C ++, för standardbiblioteket [5] och Boost [6]
- Erlang, för funktionsnamn [7]
- GDScript, för variabel- och funktionsnamn [8]
- Java, för slutgiltiga statiska konstanter och enumvärden.
- Perl, för lexikaliska variabler och subrutiner [9]
- Python, för variabelnamn, funktionsnamn, metodnamn och modul- eller paketnamn (d.v.s. filnamn) [1]
- R, för variabelnamn, funktionsnamn, argumentnamn, särskilt i tidyversstil [10]
- Ruby, för variabel- och metodnamn [11]
- Rust, för bland annat variabel- och funktionsnamn [12]
- Elixir, för atom-, variabel- och funktionsnamn [13]
- Eiffel, för klass- och funktionsnamn [14]
Se även
- Kamelnotation, vanligare i Java
- Kebabnotation, vanligare i LISP
- Namngivningskonvention (programmering)
Referenser
- ^ [a b] ”PEP 0008 -- Style Guide for Python Code”. 5 juli 2001. https://www.python.org/dev/peps/pep-0008/.
- ^ Gavin Kistner (2004-02-23). ”Appropriate use of camelCase”. Web link. Arkiverad från originalet.
- ^ ”Quora”. 10 maj 2013. https://www.quora.com/Programming-Languages/What-is-the-history-of-the-term-snake-case-snake_case.
- ^ ”Xen wiki”. https://wiki.xenproject.org/wiki/OCaml_Best_Practices_for_Developers#Names_of_Identifiers.
- ^ ”Library Design Guidelines”. https://github.com/cplusplus/LEWG/blob/master/library-design-guidelines.md.
- ^ ”Boost Library Requirements and Guidelines”. http://www.boost.org/doc/libs/1_34_0/more/lib_guide.htm#Design_and_Programming.
- ^ ”Programming Rules”. Arkiverad från originalet den 4 september 2010. https://web.archive.org/web/20100904160816/http://www.erlang.se/doc/programming_rules.shtml#REF10726. Läst 30 juni 2019.
- ^ ”GDScript Style Guide”. https://docs.godotengine.org/en/3.0/getting_started/scripting/gdscript/gdscript_styleguide.html#functions-and-variables.
- ^ Perl Best Practices
- ^ The tidyverse style guide. http://style.tidyverse.org/
- ^ ”Ruby Naming Conventions”. https://github.com/styleguide/ruby/naming.
- ^ ”Rust Naming Conventions”. Arkiverad från originalet den 7 juni 2017. https://web.archive.org/web/20170607051157/http://aturon.github.io/style/naming/README.html. Läst 30 juni 2019.
- ^ ”Elixir Style Guide”. https://github.com/niftyn8/elixir_style_guide/blob/master/README.md.
- ^ ”Eiffel Class and Feature Names”. https://www.eiffel.org/doc/solutions/Eiffel%20Class%20and%20Feature%20Names.
Externa länkar
- Snake case converter