# Snake case

Snake case se refiere al estilo de escritura en el que cada espacio se reemplaza con un carácter de subrayado (snake_case) y la primera letra de cada palabra se escribe en minúsculas. Es una convención de nomenclatura comúnmente usada en informática, por ejemplo, para nombres de variables y subrutinas, y para nombres de archivos . Un estudio encontró que los lectores pueden reconocer los valores con nomenclatura estilizada con snake case más rápidamente que "Camel case". Sin embargo, "los sujetos fueron entrenados principalmente en el estilo de subrayado", por lo que no se puede eliminar la posibilidad de sesgo.

## Historia

El uso de guiones bajos como separadores de palabras se remonta a finales de la década de 1960. Está particularmente asociado con C, lo cual se encuentra en El lenguaje de programación C (1978) y 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".
Dentro de Usenet, el término snake_case se vio por primera vez en la comunidad de Ruby en 2004, utilizado por Gavin Kistner, escribiendo:
Sin embargo, el ex ingeniero de Intel, Jack Dahlgren, ha declarado que estaba usando el término internamente en esta empresa (y tal vez en conversaciones con ingenieros de Microsoft) en 2002. Es posible que el término se haya desarrollado independientemente en más de una comunidad.
A partir del año 2015, los nombres para otras convenciones de nomenclatura separadas por delimitadores para múltiples identificadores de palabras no han sido estandarizadas. Sin embargo, algunos términos tienen niveles de uso cada vez mayores, como por ejemplo: lisp-case, kebab-case, SCREAMING_SNAKE_CASE, entre otros.

## Ejemplos

Una lista de lenguajes de programación que convencionalmente usan el snake case.
* ABAP
* Ada, con letras iniciales también en mayúsculas
* C++, Boost
* C, para algunos nombres de tipos en la biblioteca estándar, pero no para nombres de funciones.
* Eiffel, para nombres de clases y de características
* Elixir, para nombres de átomos, variables y funciones
* Erlang, para nombres de funciones
* GDScript, para nombres de variables y funciones
* Java usa SCREAMING_SNAKE_CASE para constantes finales estáticas y valores de enumeración.
* Kotlin usa SCREAMING_SNAKE_CASE para constantes
* Magik
* OCaml, para valores, tipos y nombres de módulos
* Perl, para variables léxicas y subrutinas
* Oracle SQL y PL/SQL, para todos los identificadores sin comillas (tablas, columnas, índices, restricciones, variables PL/SQL, constantes, procedimientos/funciones, activadores,...), aunque no es oficial de Oracle, sigue siendo recomendado por la mayoría de los "influyentes" conocidos y utilizado en toda la documentación oficial de Oracle
** Todos los identificadores de snake_case sin comillas se representan internamente como identificadores SCREAMING_SNAKE_CASE.
* Prolog, tanto para átomos (nombres de predicados, nombres de funciones y constantes) como para variables
* Python, para nombres de variables, nombres de funciones, nombres de métodos y nombres de módulos o paquetes (es decir, archivos)
* PHP usa SCREAMING_SNAKE_CASE para constantes de clase
* R, para nombres de variables, nombres de funciones y nombres de argumentos, especialmente en el estilo tidyverse
* Ruby, para nombres de métodos y variables
* Rust, para nombres de variables, nombres de funciones, nombres de métodos, nombres de módulos y macros
* Tcl
* Terraform (software), para recursos y variables