Skip to content
IRC-CodingIRC-Coding
Clean CodeDRYKISSYAGNINamingRefactoringCalidad de software

Clean Code Principios: Código Legible y Mantenible

Aprende Clean Code: nombres significativos, funciones pequeñas, DRY, KISS, YAGNI con ejemplos en JavaScript y TypeScript.

S

schutzgeist

4 min read
Clean Code Principios: Código Legible y Mantenible

Principios de Clean Code

Clean Code no es un fin en sí mismo, sino el fundamento para software que pueda mantenerse y extenderse durante años. Este artículo cubre los principios más importantes con ejemplos prácticos.

Este artículo complementa clean-code-solid-prinzipien.mdx.

En pocas palabras

Clean Code significa escribir código de manera que otros desarrolladores lo entiendan, modifiquen y extiendan rápidamente. Principios clave: nombres significativos, funciones pequeñas, DRY, KISS, YAGNI.

Descripción técnica compacta

Clean Code es un enfoque para el desarrollo de software que prioriza la legibilidad, el mantenimiento y la extensibilidad. Popularizado por Robert C. Martin, Clean Code abarca principios como nombres expresivos, funciones cortas con una única responsabilidad, evitar duplicación, simplicidad y refactorización consistente.

Los principios más importantes

1. Nombres significativos

// Malo
const d = 2;
const arr = getUsers();

// Bien
const DAYS_IN_WEEK = 7;
const activeUsers = users.filter(u => u.isActive);

2. Funciones pequeñas

Las funciones deben ser pequeñas y hacer exactamente una cosa.

// Malo: hace demasiado
function processUser(user) {
  user.email = user.email.toLowerCase();
  user.name = user.name.trim();
  saveToDatabase(user);
  sendWelcomeEmail(user);
}

// Bien: dividido en responsabilidades
function normalizeUser(user) {
  return { ...user, email: user.email.toLowerCase(), name: user.name.trim() };
}

async function registerUser(user) {
  const normalized = normalizeUser(user);
  await saveToDatabase(normalized);
  await sendWelcomeEmail(normalized);
}

3. DRY (Don’t Repeat Yourself)

// Malo: IVA duplicado
function calculateTotal(items) {
  return items.reduce((s, i) => s + i.price * i.qty * 1.19, 0);
}

// Bien: constante centralizada
const VAT_RATE = 1.19;
function calculateTotal(items) {
  return items.reduce((s, i) => s + i.price * i.qty * VAT_RATE, 0);
}

4. KISS (Keep It Simple)

// Malo: abstracción excesiva
class UserProcessor {
  constructor(strategy) { this.strategy = strategy; }
  process(user) { return this.strategy.execute(user); }
}

// Bien: simple
function normalizeEmail(user) {
  return { ...user, email: user.email.toLowerCase() };
}

5. YAGNI (You Aren’t Gonna Need It)

Implementa solo lo que necesitas ahora.

Principios adicionales

Boy Scout Rule

Deja el código más limpio de lo que lo encontraste.

Command-Query Separation

Una función debe hacer algo (Command) o devolver algo (Query), no ambas cosas.

Manejo de errores

// Malo: errores silenciados
function getData() {
  try { return fetchFromAPI(); }
  catch (e) { return null; }
}

// Bien: errores registrados y relanzados
async function getData() {
  try { return await fetchFromAPI(); }
  catch (error) {
    logger.error('API fetch failed', error);
    throw new Error('No pudieron cargarse los datos');
  }
}
Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code: Deutsche Ausgabe

Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code: Deutsche Ausgabe

39,99 €

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Clean Code für Dummies: Besser programmieren. Professionelle Softwareentwicklung.

Clean Code für Dummies: Besser programmieren. Professionelle Softwareentwicklung.

24,99 €

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Besser coden: Best Practices für Clean Code. Das ideale Buch für die professionelle Softwareentwicklung

Besser coden: Best Practices für Clean Code. Das ideale Buch für die professionelle Softwareentwicklung

34,99 €

Bei Amazon ansehen

Affiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.

Code Smells

ProblemaDescripciónSolución
Long MethodFunción > 30 líneasDividir
Large ClassClase > 200 líneasSeparar responsabilidades
Duplicate CodeLógica idéntica en varios lugaresExtraer
Long Parameter List> 4 parámetrosObjeto parámetro
Deep Nesting> 3 niveles de anidaciónEarly Return / Guard Clauses
Dead CodeCódigo nunca ejecutadoEliminar
Magic NumbersConstantes sin nombreConstantes nombradas

Ejemplo práctico: Refactoring

// Antes: ilegible, hace demasiado
function calc(o, c, d) {
  let r = 0;
  for (let i = 0; i < o.length; i++) {
    if (o[i].t == 'premium') r += o[i].p * 0.8;
    else if (o[i].t == 'vip') r += o[i].p * 0.7;
    else r += o[i].p;
  }
  if (d) r = r * 0.9;
  return r * 1.19;
}

// Después: Clean Code
const VAT_RATE = 1.19;
const DISCOUNT_MAP = { premium: 0.8, vip: 0.7, standard: 1.0 };

function applyDiscount(price, customerType) {
  const factor = DISCOUNT_MAP[customerType] ?? 1.0;
  return price * factor;
}

function calculateOrderTotal(orders, hasCoupon = false) {
  const subtotal = orders.reduce(
    (sum, order) => sum + applyDiscount(order.price, order.type), 0
  );
  const afterCoupon = hasCoupon ? subtotal * 0.9 : subtotal;
  return afterCoupon * VAT_RATE;
}

Puntos clave para el examen

  • DRY, KISS, YAGNI como principios fundamentales
  • Nombres significativos como documentación más importante
  • Funciones: una responsabilidad, máximo 20-30 líneas
  • Boy Scout Rule: dejar el código más limpio
  • Command-Query Separation
  • Identificar y resolver Code Smells
  • Refactoring como proceso continuo

FAQ

1. ¿Qué significa DRY?

Don’t Repeat Yourself. Cada pieza de lógica debe existir exactamente una vez.

2. ¿Qué significa KISS?

Keep It Simple. Simplicidad sobre complejidad.

3. ¿Qué significa YAGNI?

You Aren’t Gonna Need It. Implementar solo lo que se necesita ahora.

4. ¿Cuán larga debe ser una función?

Máximo 20-30 líneas, con una única responsabilidad.

5. ¿Cuál es la Boy Scout Rule?

Dejar el código más limpio de lo que lo encontraste.

6. ¿Qué es Command-Query Separation?

Una función hace algo o devuelve algo, no ambas cosas.

7. ¿Qué son Magic Numbers?

Números sin nombre en el código. Reemplazarlos con constantes.

8. ¿Qué es un Code Smell?

Indicador de un problema más profundo como Long Method o duplicación.

9. ¿Quién popularizó Clean Code?

Robert C. Martin (Uncle Bob).

10. ¿Qué es Deep Nesting?

Más de 3 niveles de anidación. Solución: Early Return.

11. ¿Debo usar comentarios?

Los buenos comentarios explican POR QUÉ, no QUÉ. El código debe explicarse a sí mismo.

12. ¿Qué es Dead Code?

Código nunca ejecutado. Eliminarlo.

13. ¿Qué es Long Parameter List?

Más de 4 parámetros. Solución: usar un objeto de parámetros.

14. ¿Qué es Refactoring?

Mejorar la estructura del código sin cambiar su comportamiento. Un proceso continuo.

15. ¿Por qué es importante Clean Code?

El código se lee mucho más de lo que se escribe. Clean Code reduce costos de mantenimiento y errores.

Si aún tienes preguntas, consulta clean-code-solid-prinzipien.mdx.

Continuando en la ruta de aprendizaje de Calidad de Software

El siguiente artículo en la ruta de Calidad de Software aborda Fundamentos de los Principios SOLID - los cinco principios del diseño orientado a objetos: SRP, OCP, LSP, ISP y DIP.

Referencias

  1. https://www.oreilly.com/library/view/clean-code/9780134661742/
  2. https://clean-code-developer.com/
  3. https://refactoring.com/

Recomendaciones de libros sobre Calidad de Software

Si deseas profundizar en Clean Code, Calidad de Software y Refactoring, te recomendamos los siguientes libros:

Keine Bücher für Kategorie "software-engineering" gefunden.

Volver al blog
Share:

Entradas relacionadas