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
| Lenguaje | Variables/funciones | Clases/tipos | Constantes |
|---|---|---|---|
| JavaScript / TypeScript | camelCase | PascalCase | SCREAMING_SNAKE |
| Python | snake_case | PascalCase | SCREAMING_SNAKE |
| Java / C# | camelCase | PascalCase | SCREAMING_SNAKE |
| Go / Rust | camelCase* | PascalCase | MixedCase** |
| Ruby | snake_case | PascalCase | SCREAMING_SNAKE |
| PHP (moderno) | camelCase | PascalCase | SCREAMING_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
firstNameylast_nameen 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
- Abreviar en exceso:
usrMgrvsuserManager. Las abreviaturas ahorran tipeo y cuestan lectura. Excepciones universales:id,url,db. - Números mágicos como nombres:
usuario2,temp3. Si necesitas numerar para diferenciar, el nombre no describe nada. - Mezclar idiomas:
getUsuario,calcularTotalPrice. Elige un idioma para todo el codebase y respétalo. - Booleanos sin verbo:
user.statuses ambiguo;user.isActive,hasPermission,canEditse 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.