← Blog · · Equipo de ConvertCaseHQ · 7 min de lectura

camelCase, snake_case y kebab-case: guía rápida de convenciones de nombres

Esta es la versión corta. Los tipos y las clases van en PascalCase en casi todos los lenguajes. Las variables y las funciones van en camelCase en JavaScript, Java, C#, Kotlin y Swift, pero en snake_case en Python, Ruby y Rust. Las constantes van en SCREAMING_SNAKE_CASE en la mayoría de los lenguajes, con Go, Swift, C# y el C++ al estilo de Google como excepciones. Todo lo que acaba en una URL, un archivo CSS o un nombre de paquete suele ir en kebab-case y en minúsculas, y las variables de entorno van en mayúsculas con guiones bajos.

Ese es el patrón. Los detalles son donde se discute en las revisiones de código, así que esta guía rápida se ciñe a lo que dice de verdad la guía de estilo oficial o más extendida de cada lenguaje, y cita la fuente de cada uno.

camelCase, snake_case, kebab-case: los cinco estilos y sus otros nombres

  • camelCase (orderTotal): la primera palabra en minúscula y cada palabra siguiente con mayúscula inicial. También se llama lowerCamelCase; PEP 8 lo llama mixedCase.
  • PascalCase (OrderTotal): todas las palabras con mayúscula inicial. También UpperCamelCase, CapWords (PEP 8) o StudlyCaps (PSR-1 de PHP).
  • snake_case (order_total): palabras en minúscula unidas por guiones bajos.
  • SCREAMING_SNAKE_CASE (ORDER_TOTAL): palabras en mayúscula unidas por guiones bajos. La guía de JavaScript de Google lo llama CONSTANT_CASE, y su guía de Java, UPPER_SNAKE_CASE.
  • kebab-case (order-total): palabras en minúscula unidas por guiones. La mayoría de los lenguajes no pueden usarlo en identificadores, porque el guion es el signo menos.

Para pasar un nombre de un estilo a otro, pégalo en nuestro conversor de mayúsculas y minúsculas. Separa las palabras por espacios, guiones bajos, guiones y mayúsculas ya existentes, así que order_total, order-total y OrderTotal se convierten limpiamente entre sí. Eso sí, ve nombre a nombre: trata todo lo que hay en el cuadro como un único identificador.

Guía rápida: convenciones de nombres por lenguaje

LenguajeVariables y funcionesClases y tiposConstantesFuente
JavaScript, TypeScriptcamelCasePascalCaseCONSTANT_CASE para valores a nivel de módulo que nunca cambianGuías de estilo de Google para JavaScript y TypeScript
JavacamelCasePascalCaseUPPER_SNAKE_CASE para campos static final profundamente inmutablesGoogle Java Style Guide
KotlincamelCasePascalCaseSCREAMING_SNAKE_CASE para const y para valores de nivel superior o de objeto profundamente inmutablesKotlin coding conventions
C#camelCase para variables locales y parámetros, _camelCase para campos privados, PascalCase para métodos y miembros públicosPascalCase, con el prefijo I en las interfaces (IWorkerQueue)PascalCaseDocumentación de .NET de Microsoft
SwiftcamelCasePascalCasecamelCaseSwift API Design Guidelines
GocamelCase si no se exporta, PascalCase si se exportaLa misma reglaTambién MixedCaps (MaxPacketSize)Effective Go, Google Go Style
Pythonsnake_casePascalCase (CapWords)UPPER_SNAKE_CASEPEP 8
Rubysnake_casePascalCaseSCREAMING_SNAKE_CASERuby Style Guide
Rustsnake_casePascalCase (UpperCamelCase)SCREAMING_SNAKE_CASERust API Guidelines (RFC 430)
PHPcamelCase en los métodos; las propiedades quedan a tu criterioPascalCase (StudlyCaps)UPPER_SNAKE_CASE en las constantes de clasePSR-1
C++snake_case en variables, PascalCase en funcionesPascalCasekDaysInAWeekGoogle C++ Style Guide (una de varias)

Algunas filas necesitan una nota. En Go, la primera letra no es una cuestión de estilo: es la regla de visibilidad. Area se exporta fuera de su paquete y area no, y el compilador lo hace cumplir. C++ no tiene una convención común a todo el lenguaje; la propia biblioteca estándar usa snake_case (std::unordered_map, push_back), así que toma la fila de Google como una opción bien documentada, no como la regla.

Rust es especialmente estricto con el estilo. El compilador avisa de serie: escribe fn GetUser() o struct user_account y rustc te sugerirá get_user y UserAccount antes de que hayas pasado ningún linter.

Nombres de archivos, módulos y paquetes

  • Java: una clase pública de nivel superior tiene que estar en un archivo con exactamente su nombre, mayúsculas incluidas. OrderService va en OrderService.java, y javac rechaza cualquier otra cosa.
  • Kotlin: un archivo que contiene una sola clase lleva el nombre de esa clase. Los demás archivos reciben un nombre descriptivo en UpperCamelCase, como ProcessDeclarations.kt.
  • Python: los módulos llevan nombres cortos y todo en minúsculas, con guiones bajos si mejoran la legibilidad. Los paquetes también deben tener nombres cortos y en minúsculas, y PEP 8 desaconseja los guiones bajos en ellos.
  • Ruby: archivos en snake_case con el nombre de la clase que contienen, así que HelloWorld vive en hello_world.rb.
  • Go: los nombres de paquete son palabras sueltas en minúsculas, sin guiones bajos ni mixedCaps: base64, no encoding_base64 ni encodingBase64.
  • JavaScript y TypeScript: no hay una regla única. La guía de JavaScript de Google pide nombres de archivo todo en minúsculas con guiones bajos o guiones, y su guía de TypeScript usa snake_case. La guía de Airbnb dice que el nombre de un archivo debe coincidir con su exportación por defecto, así que una clase CheckBox vive en CheckBox.js. Elige una por proyecto y déjala por escrito.
  • Paquetes de npm: los nombres de paquete nuevos no pueden contener ninguna letra mayúscula.

Más allá del código fuente: variables de entorno, CSS, HTML, URL, JSON y SQL

DóndeConvenciónEjemploPor qué
Variables de entornoSCREAMING_SNAKE_CASEDATABASE_URLCoincide con las variables del sistema, como PATH y HOME. Los nombres distinguen entre mayúsculas y minúsculas en Linux y macOS, pero no en Windows.
Propiedades CSSkebab-casebackground-colorLo fija el lenguaje.
Propiedades personalizadas de CSSkebab-case tras dos guiones--brand-colorDistinguen entre mayúsculas y minúsculas, así que --Brand-Color sería otra propiedad.
Nombres de clase CSSkebab-case, a menudo con BEMcard__title--largeSe lee igual que las propiedades que lo rodean.
CSS desde JavaScriptcamelCaseel.style.backgroundColorEl objeto style expone los nombres de las propiedades en camelCase.
Atributos data de HTMLkebab-casedata-index-numberEn JavaScript se leen como dataset.indexNumber.
Rutas de URLkebab-case en minúsculas/blog/developer-case-stylesGoogle recomienda guiones en lugar de guiones bajos y trata /APPLE y /apple como URL distintas.
Claves JSONNo hay estándaruserId o user_idAdáptate al consumidor principal y convierte en la frontera.
Tablas y columnas SQLsnake_case en minúsculasorder_itemsFunciona sin comillas en todas las bases de datos principales.

Una peculiaridad de las variables de entorno: POSIX dice que las utilidades estándar usan nombres en mayúsculas y reserva para las aplicaciones los nombres que contienen minúsculas, así que un nombre en minúsculas nunca puede chocar con uno estándar. Aun así, las mayúsculas siguen siendo la costumbre establecida, así que nosotros las mantendríamos y, para evitar choques, añadiríamos un prefijo distintivo (MYAPP_TIMEOUT).

Las filas de CSS y SQL tienen cada una su propio artículo: consulta nombres en CSS y BEM para los nombres de clase, y convenciones de nombres en SQL para ver por qué las bases de datos te empujan hacia las minúsculas.

Siglas: donde las guías de estilo no se ponen de acuerdo

Todas las guías coinciden en userName. Se dividen con userID. Las guías de JavaScript y Java de Google escriben las siglas en minúscula como si fueran palabras normales (xmlHttpRequest, customerId). Go mantiene cada sigla entera en mayúsculas o en minúsculas (ServeHTTP, appID). Las directrices de .NET de Microsoft ponen en mayúscula las dos letras de una sigla de dos letras (IOStream), pero solo la primera en las más largas (HtmlTag). Rust las trata como palabras (Uuid), y PEP 8 prefiere HTTPServerError a HttpServerError. Comparamos las opciones una al lado de otra en camelCase frente a PascalCase.

Cómo decidir cuando no lo tienes claro

  1. Comprueba si la plataforma decide por ti. Los nombres de propiedades CSS, los nombres de archivo de Java, los nombres exportados de Go y los nombres de componentes de React (que deben empezar por mayúscula) no son cuestiones de estilo.
  2. Sigue la guía oficial del lenguaje. El código nuevo debe parecerse a la biblioteca estándar que tiene al lado.
  3. Adáptate al proyecto existente. PEP 8 lo dice claramente: la coherencia dentro de un proyecto importa más que la coherencia con la guía de estilo.
  4. Deja que un linter lo recuerde. La regla camelcase de ESLint, las reglas N de Ruff para Python y los avisos integrados de rustc detectan los descuidos antes de que tenga que hacerlo un revisor.
  5. Convierte una sola vez, en la frontera. Cuando un JSON en snake_case se encuentra con JavaScript en camelCase, renombra las claves en una única capa de serialización en lugar de dejar que los dos estilos se filtren por todo el código.

© 2026 ConvertCaseHQ. Todos los derechos reservados.