DevTools

← Volver al Inicio

camelCase, snake_case o kebab-case: Guía de Convenciones de Nomenclatura

Blog de DevTools — Herramientas y guías gratuitas para desarrolladores

Por Qué los Nombres Importan Tanto

Pasas más tiempo leyendo código que escribiéndolo. Los nombres son el 70% del texto en cualquier archivo fuente, y las convenciones de nomenclatura existen por una razón pragmática: cuando todos nombran igual, el cerebro deja decodificando estilos y se concentra en la lógica. Un archivo donde las variables cambian de estilo aleatoriamente obliga a leer letra por letra; uno consistente se escanea.

Las cinco convenciones dominantes:

  • camelCase: nombreUsuarioActivo — primera palabra en minúscula, siguientes capitalizadas.
  • PascalCase: NombreUsuarioActivo — todas las palabras capitalizadas.
  • snake_case: nombre_usuario_activo — minúsculas separadas por guión bajo.
  • kebab-case: nombre-usuario-activo — minúsculas con guiones medios (prohibido en identificadores de la mayoría de lenguajes: el guión se lee como resta).
  • SCREAMING_SNAKE_CASE: NOMBRE_USUARIO_ACTIVO — mayúsculas constantes gritando inmutabilidad.

El Mapa por Lenguaje

LenguajeVariables/funcionesClases/tiposConstantes
JavaScript / TypeScriptcamelCasePascalCaseSCREAMING_SNAKE
Pythonsnake_casePascalCaseSCREAMING_SNAKE
Java / C#camelCasePascalCaseSCREAMING_SNAKE
Go / RustcamelCase*PascalCaseMixedCase**
Rubysnake_casePascalCaseSCREAMING_SNAKE
PHP (moderno)camelCasePascalCaseSCREAMING_SNAKE

*En Go y Rust la capitalización inicial es semántica: mayúscula = exportado/público, minúscula = privado al paquete. **Rust usa SCREAMING para constantes estáticas y MixedCase para otros elementos.

Más Allá del Lenguaje: El Ecosistema Decide

Aunque tu lenguaje prefiera un estilo, ciertos contextos imponen el suyo propio:

  • HTML y CSS: kebab-case sin excepciones (<data-value>, background-color). Es la razón por la que los atributos data-* nunca llevan mayúsculas.
  • JSON de APIs públicas: camelCase domina (convención JavaScript), pero snake_case persiste en APIs Python/Ruby. Lo crítico es consistencia interna: una API que mezcla firstName y last_name en el mismo objeto es sabotaje.
  • Nombres de archivo: kebab-case gana por compatibilidad multiplataforma: evita problemas de case-sensitivity entre Windows y Linux en git, y funciona en URLs sin codificación.
  • Ramas de git: kebab-case tras el tipo: feature/login-social, fix/memory-leak-dashboard.
  • Variables de entorno: SCREAMING_SNAKE universal (DATABASE_URL), herencia directa de Unix.

Convertir Entre Formatos Sin Morir de Tipeo

Cambiar de contexto implica renombrar constantemente. Recibes JSON snake_case de una API Python y lo mapeas a objetos camelCase en TypeScript. Copias un nombre de clase CSS kebab-case para generar el componente PascalCase correspondiente. Escribir estas conversiones a mano es lento y propenso a errores sutiles (¿era getUserByID o getUserById?).

Para eso sirve nuestro Text Case Converter online: pega cualquier texto y obtén su versión en los ocho formatos simultáneamente —camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, Title Case, lowercase y UPPERCASE—. Pegar, copiar el formato correcto, seguir. Todo local en el navegador.

Errores Clásicos que Delatan Nivel Junior

  1. Abreviar en exceso: usrMgr vs userManager. Las abreviaturas ahorran tipeo y cuestan lectura. Excepciones universales: id, url, db.
  2. Números mágicos como nombres: usuario2, temp3. Si necesitas numerar para diferenciar, el nombre no describe nada.
  3. Mezclar idiomas: getUsuario, calcularTotalPrice. Elige un idioma para todo el codebase y respétalo.
  4. Booleanos sin verbo: user.status es ambiguo; user.isActive, hasPermission, canEdit se leen como preguntas con respuesta sí/no.

Pruébalo Ahora

Toma cualquier nombre de variable de tu proyecto actual y pégalo en el Text Case Converter: verás sus ocho transformaciones al instante. Úsalo la próxima vez que pases de escribir SQL (snake_case) a JavaScript (camelCase) y nota cuántos errores de tipeo evitas.