Snake case (a veces estilizado autológicamente como snake_case ) es la convención de nombres en la que cada espacio se reemplaza con un carácter de guión bajo (_) y las palabras se escriben en minúsculas . Es una convención de nombres de uso común en informática , por ejemplo para nombres de variables y subrutinas , y para nombres de archivos . Un estudio ha descubierto que los lectores pueden reconocer valores en snake case más rápidamente que en camel case . Sin embargo, "los sujetos fueron entrenados principalmente en el estilo de guión bajo", por lo que no se puede eliminar la posibilidad de sesgo. [1]
Una variación es el caso de la serpiente que grita , donde las palabras se escriben en mayúsculas (estilizado como SCREAMING_SNAKE_CASE). [2] Esta convención se utiliza para constantes en lenguajes de programación como C / C++ , Python , Java , PHP , así como para variables de entorno .
Historia
El uso de guiones bajos como separadores de palabras se remonta a finales de la década de 1960. Se asocia particularmente con C , se encuentra en The C Programming Language (1978) y se contrasta con Pascal case (un tipo de Camel case ). Sin embargo, la convención tradicionalmente no tenía un nombre específico: la guía de estilo del lenguaje de programación Python se refiere a ella simplemente como "minúsculas_con_guiones_bajos". [3]
Dentro de Usenet, el término snake_case se vio por primera vez en la comunidad Ruby en 2004, [4] utilizado por Gavin Kistner, quien escribió:
Por cierto... ¿cómo se llama ese estilo de denominación? ¿Snake_case? Así lo llamaré hasta que alguien me corrija.
A partir de 2015 [actualizar], los nombres para otras convenciones de nomenclatura separadas por delimitadores para identificadores de varias palabras no se han estandarizado, aunque algunos términos tienen niveles crecientes de uso, como lisp-case, kebab-case, SCREAMING_SNAKE_CASE y más. [5] [6] [7]
Ejemplos
Los siguientes lenguajes de programación utilizan el formato snake case por convención:
OCaml , para nombres de valores, tipos y módulos [17]
Perl , para variables léxicas y subrutinas [18]
Oracle SQL y PL/SQL , [19] para todos los identificadores no entre comillas (tablas, columnas, índices, restricciones, variables PL/SQL, constantes, procedimientos/funciones, activadores,...), aunque no es oficial por parte de Oracle, sigue siendo recomendado por la mayoría de los "influenciadores" conocidos y se utiliza en toda la documentación oficial de Oracle.
Todos los identificadores snake_case sin comillas en realidad se representan internamente como identificadores SCREAMING_SNAKE_CASE.
Prolog , tanto para átomos (nombres de predicados, nombres de funciones y constantes) como para variables [20]
Python , para nombres de variables, nombres de funciones, nombres de métodos y nombres de módulos o paquetes (es decir, archivos) [3]
PHP usa SCREAMING_SNAKE_CASE para constantes de clase
^ Sharif, Bonita; Maletic, Jonathan I. (2010). "Un estudio de seguimiento ocular en los estilos de identificadores camelCase y under_score". 2010 IEEE 18th International Conference on Program Comprehension (PDF) . págs. 196–205. CiteSeerX 10.1.1.421.6137 . doi :10.1109/ICPC.2010.41. ISBN.978-1-4244-7604-6. Número de identificación S2CID 14170019.
^ "Caso de la serpiente". Mozilla Developer Network . 8 de septiembre de 2023 . Consultado el 10 de noviembre de 2023 .
^ por Guido van Rossum; Barry Warsaw; Nick Coghlan (5 de julio de 2001). "PEP 0008 -- Guía de estilo para código Python".
^ Gavin Kistner (23 de febrero de 2004). "Uso apropiado de camelCase". Grupo de noticias : comp.lang.ruby. Usenet: HBn_b.379957$xy6.2073499@attbi_s02 . Consultado el 13 de agosto de 2015 .
^ "StackOverflow – ¿Cuál es el nombre de snake_case con guiones?".
^ "Programadores: si esto es CamelCase, ¿qué es esto?". Archivado desde el original el 7 de agosto de 2016. Consultado el 13 de agosto de 2015 .
^ "Camel_SNAKE-kebab". GitHub . 23 de abril de 2020.
^ "Convenciones de nomenclatura en objetos ABAP". help.sap.com . Consultado el 28 de julio de 2020 .
^ "Directrices de programación de ADA".
^ "Requisitos y pautas de la biblioteca Boost" . Consultado el 13 de agosto de 2015 .
^ "Nombres de clases y características de Eiffel". 28 de diciembre de 2019.
^ "Guía de estilo de Elixir". GitHub . Mayo de 2020.
^ "Reglas de programación". Archivado desde el original el 4 de septiembre de 2010. Consultado el 11 de agosto de 2017 .
^ "Guía de estilo de GDScript".
^ "Convenciones de código para el lenguaje de programación Java: convenciones de nomenclatura". Oracle . Consultado el 3 de agosto de 2021 .
^ "Convenciones de codificación" . Consultado el 3 de febrero de 2023 .
^ "Xen wiki" . Consultado el 15 de marzo de 2017 .
^ Damian Conway (2005). Mejores prácticas de Perl . O'Reilly Media Inc., pág. 44. ISBN978-0-596-00173-5.
^ "Guía rápida de algunas fuentes de convenciones de nomenclatura para el desarrollo de bases de datos Oracle". stevenfeuersteinonplsql.blogspot.com . Consultado el 30 de diciembre de 2020 .
^ Michael A. Covington; Roberto Bagnara; Richard A. O'Keefe; Jan Wielemaker; Simon Price (2009). "Directrices de codificación para Prolog (v.3)". pág. 14. arXiv : 0911.2899 [cs.PL].
^ IBM (julio de 1965). IBM Operating System/360 PL/I: Language Specification (PDF) . p. 16 . Consultado el 12 de noviembre de 2023 .
^ Wickham, Hadley. La guía de estilo de Tidyverse.
^ "Convenciones de nomenclatura de Ruby". GitHub . Mayo de 2020.
^ "Nombres: pautas de la API de Rust". Archivado desde el original el 16 de septiembre de 2018. Consultado el 27 de octubre de 2019 .
^ "Convenciones de nomenclatura de Terraform". Febrero de 2022.
^ "Documentación - El lenguaje de programación Zig" . Consultado el 10 de marzo de 2024 .