Clean Code en JavaScript: principios para escribir código limpio

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Clean Code en JavaScript: principios y ejemplos



El código limpio (Clean Code) no es solo un término de moda, sino un enfoque fundamental para el desarrollo que hace que el programa sea comprensible, fácil de mantener y escalable. En el mundo de JavaScript y Node.js, donde los proyectos crecen rápidamente y requieren cambios frecuentes, los principios de Clean Code se vuelven especialmente importantes. En este artículo analizaremos las prácticas clave para escribir código limpio en JavaScript con ejemplos concretos que te ayudarán a mejorar la calidad de tus proyectos.



1. Nombrado correcto de variables y funciones



El nombre de una variable o función debe responder a las preguntas "¿qué es esto?" y "¿qué hace?". Evita nombres de una sola letra (excepto contadores de bucles) y abreviaciones que no sean obvias.



Ejemplo incorrecto:

const d = new Date();const a = [];const fn = (x, y) => x + y;


Ejemplo correcto:

const currentDate = new Date();const userList = [];const calculateSum = (firstNumber, secondNumber) => firstNumber + secondNumber;


Reglas de nombrado:

  • Usa camelCase para variables y funciones.
  • Para valores booleanos utiliza prefijos: is, has, should (por ejemplo, isActive, hasPermission).
  • Nombra las funciones con verbos: getUser, sendEmail, validateInput.
  • Evita abreviaciones: usr → user, conf → configuration.


2. Funciones pequeñas y de una sola tarea



Cada función debe realizar exactamente una tarea. Si una función hace más de una acción, debe dividirse en varias. Esto mejora la legibilidad y la capacidad de prueba.



Ejemplo incorrecto (la función hace 3 cosas a la vez):

function processUserData(user) {  // Validación  if (!user.email || !user.password) {    throw new Error('Invalid data');  }  // Formateo  const formattedUser = {    email: user.email.toLowerCase(),    password: hashPassword(user.password)  };  // Guardado en BD  db.save(formattedUser);  return formattedUser;}


Ejemplo correcto (división en funciones separadas):

function validateUserInput(user) {  if (!user.email || !user.password) {    throw new Error('Email and password are required');  }}

function formatUserData(user) { return { email: user.email.toLowerCase(), password: hashPassword(user.password) };}

function saveUserToDatabase(user) { return db.save(user);}

function processUserData(user) { validateUserInput(user); const formattedUser = formatUserData(user); return saveUserToDatabase(formattedUser);}


Este enfoque hace que el código sea autodocumentado y simplifica la búsqueda de errores.



3. Manejo de errores y casos límite



El código limpio incluye obligatoriamente el manejo de errores y contempla los casos límite. No dejes espacio para fallos inesperados.



Ejemplo incorrecto (sin manejo de errores):

function getUserAge(user) {  return user.age; // Si user o user.age es undefined — error}


Ejemplo correcto (con protección):

function getUserAge(user) {  if (!user || typeof user.age !== 'number') {    return null; // o throw new Error('Invalid user data')  }  return user.age;}


Principios de manejo de errores:

  • Usa try/catch para operaciones asíncronas (especialmente en Node.js).
  • Crea tus propias clases de error para diferentes situaciones.
  • No tragues errores en silencio — regístralos o propágalos hacia arriba.


class ValidationError extends Error {  constructor(message)                

Blogs

Book Recommendations