Implicaciones de duplicar código

Clase 26 de 80Curso de JavaScript Desde Cero

Contenido del curso

Primeros Pasos

Funciones y This

Resumen

Cuando trabajamos con objetos en JavaScript, es muy común enfrentar un problema silencioso pero costoso: la duplicación de código. Imagina que necesitas representar varios cohetes, cada uno con sus propiedades y métodos. ¿Vas a copiar y pegar el mismo bloque una y otra vez? Las funciones constructoras llegan para resolver exactamente eso, permitiéndote generar objetos de forma eficiente y reutilizable.

¿Qué es la notación literal de objetos y por qué no siempre es suficiente?

En JavaScript, la forma más directa de crear un objeto es mediante su notación literal [0:12]. Simplemente declaras una variable y le asignas keys y values, e incluso puedes añadir métodos dentro del mismo bloque.

javascript const cohete = { nombre: "Falcon", velocidad: 28000, mensaje: function() { return El cohete ${this.nombre} viaja a ${this.velocidad} km/h; } };

Este enfoque funciona perfectamente cuando solo necesitas un objeto. El problema aparece cuando requieres crear un segundo, un tercero o decenas de cohetes con la misma estructura. En ese momento, te ves obligado a duplicar líneas de código, y eso trae consecuencias serias.

¿Por qué duplicar código es un problema grave en programación?

Duplicar código no es solo una cuestión estética. Genera una cadena de dificultades que afectan directamente la calidad de cualquier proyecto [0:38]:

  • Mantenimiento difícil: con dos objetos quizás es manejable, pero con decenas se vuelve muy complejo revisar y actualizar cada uno.
  • Aumento de complejidad: no solo vigilas una estructura, sino muchas que deben funcionar correctamente al mismo tiempo.
  • Errores humanos: al modificar un objeto puedes olvidar aplicar el mismo cambio en otro, generando inconsistencias difíciles de detectar.
  • Escalabilidad limitada: agregar diez objetos más sobre una base ya duplicada es como una bola de nieve que crece sin control [1:24].
  • Consumo de tiempo y recursos: revisar objeto por objeto consume horas que podrían invertirse en mejorar funcionalidades.
  • Dificultad para identificar errores: cuando algo falla, rastrear el problema entre cientos de líneas repetidas se convierte en una tarea agotadora [2:04].

¿Qué es el principio Don't Repeat Yourself y cómo se aplica?

Existe un principio fundamental en programación conocido como DRY (Don't Repeat Yourself) [1:42]. Su idea central es escribir código modular: fragmentos pequeños, generales y reutilizables. Cada vez que duplicas un bloque, estás violando este principio. El objetivo es que una pieza de lógica exista en un solo lugar y pueda invocarse cuantas veces sea necesario.

¿Cómo resuelven las funciones constructoras el problema de la duplicación?

La solución es crear una función que produzca objetos [2:12]. En lugar de escribir cada objeto a mano, defines una función constructora que actúa como un molde. Cada vez que la invocas, genera un nuevo objeto con la misma estructura pero con los datos que tú le pases.

javascript function Cohete(nombre, velocidad) { this.nombre = nombre; this.velocidad = velocidad; this.mensaje = function() { return El cohete ${this.nombre} viaja a ${this.velocidad} km/h; }; }

const falcon = new Cohete("Falcon", 28000); const atlas = new Cohete("Atlas", 25000);

Con este patrón obtienes varias ventajas:

  • Reutilización real: un solo fragmento de código sirve para crear tantos objetos como necesites.
  • Mantenimiento centralizado: si necesitas cambiar algo, lo haces en la función y se refleja en todos los objetos futuros.
  • Código escalable: agregar nuevos cohetes es cuestión de una sola línea por cada uno.

Las funciones constructoras aprovechan la capacidad natural de las funciones para encapsular lógica y ejecutarla múltiples veces con diferentes argumentos. Así, el código se mantiene limpio, predecible y fácil de depurar.

¿Ya utilizas funciones constructoras en tus proyectos o prefieres otro enfoque para crear objetos? Comparte tu experiencia en los comentarios.