Saltar al contenido
nombrar.en · devschool

Nombrar variables y funciones en inglés

Lección 7 de 23 · 9 min de lectura · Actualizado el

En esta lección
  1. Por qué en inglés
  2. Los estilos de escritura
  3. Verbos y sustantivos: la regla básica
  4. Nombres para valores booleanos
  5. Singular y plural
  6. Nombres de clases y de cosas
  7. Abreviaturas aceptadas
  8. Qué evitar
  9. Qué dice la convención de cada lenguaje
  10. Errores frecuentes
  11. Resumen

Ponerle nombre a las cosas es una de las partes más difíciles de programar. Un buen nombre explica qué hace el código sin necesidad de comentarios; uno malo obliga a todos a descifrarlo. Además, casi toda la comunidad profesional escribe los nombres en inglés, incluso en equipos españoles. En esta lección aprenderás las convenciones de escritura, los patrones de nombres en inglés y los errores típicos de los hispanohablantes.

Por qué en inglés

Aunque tu proyecto sea en español, conviene que el código esté en inglés por varias razones:

  • Las palabras reservadas del lenguaje (if, for, return) ya son inglesas. Mezclar si o para es imposible, y mezclar calcularTotal() con if resulta raro de leer.
  • Las librerías y los frameworks usan inglés. Tu código convive con user.map(...) o getElementById(...).
  • Si algún día trabajas con gente de otros países, o subes tu proyecto a GitHub, nadie se entera de un nombre como nombreUsuario.
  • Los nombres en inglés suelen ser más cortos: user en vez de usuario, list en vez de lista.

Nota: esto no es una norma universal. Si en tu empresa o proyecto de clase se usa español, sigue la regla del grupo. Lo importante es ser consistente: no mezcles userName con nombreCompleto en el mismo proyecto.

Los estilos de escritura

Un nombre con varias palabras no puede llevar espacios, así que cada lenguaje tiene una forma de unirlas. Estos son los cinco estilos que verás.

EstiloPronunciaciónEjemploSe usa en
camelCase/kámel keis/userName, getTotalVariables y funciones en JS, Java, TS
PascalCase/páskal keis/UserProfile, ShoppingCartClases, componentes (React)
snake_case/snéik keis/user_name, get_totalVariables y funciones en Python, SQL, Ruby
kebab-case/kébab keis/main-menu, user-cardClases CSS, URLs, nombres de archivo
UPPER_SNAKE_CASE/áper snéik keis/MAX_SIZE, API_URLConstantes

El nombre viene de cómo se ven: camel (camello) tiene “jorobas” en las mayúsculas del medio; snake (serpiente) va pegada al suelo con guiones bajos; kebab parece un pincho con guiones; Pascal es el nombre de un lenguaje y de un matemático.

const userName = "Ana";              // camelCase: variable
const MAX_USERS = 100;               // UPPER_SNAKE_CASE: constante
class ShoppingCart {}                // PascalCase: clase
function getTotalPrice() {}          // camelCase: función

En Python se prefiere snake_case:

user_name = "Ana"
MAX_USERS = 100

class ShoppingCart:
    pass

def get_total_price():
    pass

Y en CSS, los nombres de clase suelen ser kebab-case:

.main-menu { display: flex; }
.user-card__title { font-size: 1.2rem; }

Ten en cuenta que kebab-case no puede usarse como nombre de variable en JavaScript: user-name se interpretaría como user menos name.

Verbos y sustantivos: la regla básica

La regla de oro:

  • Las variables y las clases se nombran con sustantivos (user, price, ShoppingCart).
  • Las funciones se nombran con verbos (getUser, calculateTotal, sendEmail).
MalBienPor qué
datauserListdata no dice nada
xtotalUna letra no explica
calc()calculateTotal()Un verbo completo
userData()getUserData()Una función necesita verbo
tmppreviousValueLos temporales confunden
doIt()submitForm()doIt no describe la acción

Los verbos más comunes en nombres de funciones ya los viste en Verbos del código: get, set, add, remove, create, delete, update, find, load, save, send, show, hide, validate.

Nombres para valores booleanos

Las variables y funciones que guardan o devuelven verdadero/falso se nombran como una pregunta que se contesta con sí o no. Se usan estos prefijos:

PrefijoPronunciaciónSignificaEjemplo
is/is/¿es…?isActive, isEmpty
has/jas/¿tiene…?hasPermission, hasItems
can/can/¿puede…?canEdit, canDelete
should/shud/¿debería…?shouldUpdate
was / did/uas/, /did/¿ha ocurrido…?wasSaved, didFail
const isLoggedIn = true;
const hasUnreadMessages = false;

if (isLoggedIn && !hasUnreadMessages) {
  console.log("All clear"); // All clear
}

Se lee casi como una frase: “if is logged in and not has unread messages”. Evita nombres ambiguos como login, status o check para un booleano: no sabes si son verdadero o falso.

Cuidado: evita los negativos en el nombre, como isNotValid o disabled = false. Pensar en dobles negaciones (“si no está no válido”) es difícil. Usa isValid y niégalo con !isValid.

Singular y plural

Una convención sencilla pero muy útil:

Qué guardaNombreEjemplo
Un solo elementosingularuser, product, item
Una listapluralusers, products, items
Un número de elementoscount o totaluserCount, totalItems
const users = ["Ana", "Luis"];
for (const user of users) {
  console.log(user);  // Ana, Luis
}

Aquí users es la lista y user es cada elemento. Se lee “for each user of users”, una frase natural en inglés. Cuidado con los plurales irregulares: person → people, child → children, category → categories, index → indexes o indices, status → statuses, data (que ya es plural de datum pero se usa como singular).

Nombres de clases y de cosas

Los nombres de clases son sustantivos en singular y con mayúscula inicial: User, Product, Order, ShoppingCart. Los de las funciones y métodos son verbos. Las interfaces y los componentes suelen terminar en un sustantivo que dice qué son: UserList, LoginForm, ProductCard.

Y los sufijos que indican el papel:

SufijoPronunciaciónSignificadoEjemplo
-er / -or/er/, /or/el que hace algoparser, listener, validator
Handler/jándler/gestor de un eventoclickHandler
Service/sérvis/servicioUserService
Manager/mánayer/gestorFileManager
Factory/fáctori/fábricaUserFactory
Util(s)/iútils/utilidadesDateUtils
Config/cónfig/configuraciónappConfig
Props / State/props/, /steit/propiedades / estadouserState

Abreviaturas aceptadas

En programación se abrevia mucho. Algunas son universales y otras confunden.

AbreviaturaSignificaSe pronuncia
i, jíndices de bucle/ai/, /yei/
nnúmero/en/
tmptemporary/témporeri/
errerror/er/
msgmessage/mésech/
btnbutton/báton/
imgimage/ímech/
idxindex/índeks/
numnumber/nam/
max / minmaximum / minimum/maks/, /min/
strstring/strin/
arrarray/arréi/
objobject/óbyect/
param(s)parameter(s)/paráms/
configconfiguration/konfíg/
req / resrequest / response/rekuést/, /rispóns/
dbdatabase/di-bi/
ididentifier/ai-di/

Abrevia solo si la abreviatura es de uso común. calcTtlPrc es un horror; calculateTotalPrice es perfecto.

Qué evitar

Estos son los nombres que más dificultan la lectura:

  • Una sola letra (excepto i, j en bucles y x, y en coordenadas).
  • Nombres genéricos: data, info, stuff, thing, temp, foo, bar.
  • Nombres engañosos: userList que en realidad es un objeto.
  • Nombres demasiado largos: getTheTotalPriceOfAllTheItemsInTheCart (mejor getCartTotal).
  • Nombres sin significado: var1, var2.
  • Mezclar idiomas: getNombre(), totalPrecio.
  • Mezclar estilos: user_name y userAge en el mismo archivo JavaScript.

Dos ejemplos para comparar:

// Hard to read
function f(a, b) {
  return a * b * 0.21;
}

// Easy to read
function calculateVat(price, quantity) {
  const VAT_RATE = 0.21;
  return price * quantity * VAT_RATE;
}

console.log(calculateVat(10, 3)); // 6.3

VAT (/vi ei ti/, Value Added Tax) es el IVA. Cuando una sigla española no tiene equivalente claro, escribe el concepto completo (nationalIdNumber mejor que dni).

Qué dice la convención de cada lenguaje

LenguajeVariables y funcionesClasesConstantes
JavaScript / TypeScriptcamelCasePascalCaseUPPER_SNAKE_CASE
Pythonsnake_casePascalCaseUPPER_SNAKE_CASE
JavacamelCasePascalCaseUPPER_SNAKE_CASE
PHPcamelCase / snake_casePascalCaseUPPER_SNAKE_CASE
SQLsnake_casesnake_caseUPPERCASE (palabras clave)
CSSkebab-casekebab-case--kebab-case

Si trabajas en un proyecto existente, sigue sus reglas aunque difieran.

Errores frecuentes

  • Mezclar español e inglés: getUsuario() o totalPrecio. Elige un idioma y mantenlo.
  • Traducir literalmente con un traductor: borrarPedido no siempre es eraseOrder; lo normal es deleteOrder. Mira cómo lo hacen las librerías.
  • Olvidar el verbo en las funciones: userName() no dice qué hace; getUserName() sí.
  • Poner s de plural donde no toca: data ya significa varios datos; no pongas datas. Y news es singular.
  • Falsos amigos: actual significa “real”, no “actual”. Para el valor de ahora usa current (currentUser, currentPage).
  • Nombres demasiado cortos o largos: busca el equilibrio. Piensa si otra persona los entendería sin explicación.

Resumen

TemaRegla
IdiomaCódigo en inglés, coherente en todo el proyecto
VariablesSustantivos, camelCase o snake_case
FuncionesVerbos: getUser, calculateTotal
ClasesSustantivos en singular, PascalCase
ConstantesUPPER_SNAKE_CASE
Booleanosis, has, can, should
ListasPlural: users; cada elemento, singular: user
EvitarUna letra, data, tmp, mezcla de idiomas y estilos

Ahora que sabes nombrar, es hora de enfrentarte a lo que te dice el ordenador cuando algo sale mal: Mensajes de error.

Pon a prueba lo que has aprendido

[Inglés] ¿Qué nombre de función sigue las convenciones de JavaScript?

[Inglés] ¿Cuál es un buen nombre para una variable booleana?

[Inglés] ¿Qué estilo se usa normalmente para las constantes?

[Inglés] Tienes una lista con varios usuarios. ¿Qué nombre es mejor?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.