Snake case

De Wikipedia, la enciclopedia libre
Pieza de código de un módulo del kernel de Linux, que utiliza snake case para los identificadores.

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.[1]

Historia[editar]

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".[2]

Dentro de Usenet, el término snake_case se vio por primera vez en la comunidad de Ruby en 2004,[3]​ utilizado por Gavin Kistner, escribiendo:

"BTW...what *do* you call that naming style? snake_case? That's what I'll call it until someone corrects me." Por cierto... ¿cómo *llamas* a ese estilo de denominación? caso_serpiente? Así lo llamaré hasta que alguien me corrija.

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.[4]​  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.[5][6][7]

Ejemplos[editar]

Una lista de lenguajes de programación que convencionalmente usan el snake case.

  • ABAP[8]
  • Ada, con letras iniciales también en mayúsculas[9]
  • C++, Boost[10]
  • 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[11]
  • Elixir, para nombres de átomos, variables y funciones[12]
  • Erlang, para nombres de funciones[13]
  • GDScript, para nombres de variables y funciones[14]
  • Java usa SCREAMING_SNAKE_CASE para constantes finales estáticas y valores de enumeración.[15]
  • Kotlin usa SCREAMING_SNAKE_CASE para constantes[16]
  • Magik
  • OCaml, para valores, tipos y nombres de módulos[17]
  • Perl, para variables léxicas y subrutinas[18]
  • Oracle SQL y PL/SQL,[19]​ 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[20]
  • Python, para nombres de variables, nombres de funciones, nombres de métodos y nombres de módulos o paquetes (es decir, archivos)[2]
  • 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[21]
  • Ruby, para nombres de métodos y variables[22]
  • Rust, para nombres de variables, nombres de funciones, nombres de métodos, nombres de módulos y macros[23]
  • Tcl
  • Terraform (software), para recursos y variables[24]

Véase también[editar]

Referencias[editar]

  1. 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. pp. 196-205. ISBN 978-1-4244-7604-6. doi:10.1109/ICPC.2010.41. 
  2. a b Guido van Rossum, Barry Warsaw, Nick Coghlan (5 de julio de 2001). «PEP 0008 -- Style Guide for Python Code». 
  3. Error en la llamada a Plantilla:Snake case: parámetro title requerido.
  4. «Quora». 10 de mayo de 2013. 
  5. «StackOverflow – What's the name for snake_case with dashes?». 
  6. «Programmers – If this is camelCase what-is-this?». Archivado desde el original el 7 de agosto de 2016. Consultado el 28 de febrero de 2023. 
  7. «Camel_SNAKE-kebab». GitHub. 23 de abril de 2020. 
  8. «Naming Conventions in ABAP Objects». help.sap.com. Consultado el 28 de julio de 2020. 
  9. «Ada Programming Guidelines». Archivado desde el original el 25 de enero de 2022. Consultado el 28 de febrero de 2023. 
  10. «Boost Library Requirements and Guidelines». Consultado el 13 de agosto de 2015. 
  11. «Eiffel Class and Feature Names». 28 de diciembre de 2019. 
  12. «Elixir Style Guide». GitHub. May 2020. 
  13. «Programming Rules». Archivado desde el original el 4 de septiembre de 2010. Consultado el 11 de agosto de 2017. 
  14. «GDScript Style Guide». 
  15. «Code Conventions for the Java Programming Language – Naming Conventions». Oracle. Consultado el 3 de agosto de 2021. 
  16. «Coding Conventions». Consultado el 3 de febrero de 2023. 
  17. «Xen wiki». Consultado el 15 de marzo de 2017. 
  18. Damian Conway (2005). Perl Best Practices. O'Reilly Media Inc. p. 44. ISBN 978-0596001735. 
  19. «Quick Guide to Some Sources for Naming Conventions for Oracle Database Development». stevenfeuersteinonplsql.blogspot.com. Consultado el 30 de diciembre de 2020. 
  20. «Coding Guidelines for Prolog (v.3)». MISSING LINK.. 
  21. Wickham, Hadley. The tidyverse style guide. 
  22. «Ruby Naming Conventions». GitHub. May 2020. 
  23. «Naming – Rust API Guidelines». Archivado desde el original el 16 de septiembre de 2018. Consultado el 28 de febrero de 2023. 
  24. «Terraform Naming Conventions». Feb 2022. 

Enlaces externos[editar]