Duplicar, o copy pegar, código no es una buena idea

El otro día me volvió a ocurrir, y van varias veces, y de ahí este post, que en una auditoría – revisión software me ocurría algo similar a esto:
– Pero aquí hay un problema… este software tiene mucho código copy – paste [recuerdo un antiguo caso en que el código repetido era del 55%] – Comenté
– Ya ¿y cuál es el problema de eso? Yo más bien creo que es una buena práctica porque ahorramos tiempo al codificar y así, además, cuando hacemos un buen algoritmo lo repetimos muchas otras veces por el código – Me respondieron.
– …
El código duplicado, código copy paste o código repetido, como nosotros le llamamos (ya que normalmente se hace copy paste del mismo código mucho más de dos veces), es la práctica de hacer trozo de código y copiarlo – pegarlo idénticamente varias veces. Y esto no es buena idea.
Recuerdo que hace unos años leí bastantes trabajos sobre esta, llamemos, “no buena práctica”, y similares, tanto que estas prácticas fueron uno de los temas importantes de mi tesis doctoral. Quizás los textos más famosos sobre el código duplicado son de Beck y Fowler y sus “bad smells” (“malos olores”), que ayudan a detectar dónde aplicar las refactorizaciones (que simplificadamente son mantenimientos perfectivos del software).
De manera resumida, duplicar código no es bueno porque:
Aumenta innecesariamente el número de líneas de código, y está comprobado que a más líneas de código (no necesarias) más complejo es el mantenimiento y más rápidamente crece la entropía.
Implica que si hay que cambiar ese código repetido… hay que cambiarlo en muchos sitios. Hay que buscar todas las repeticiones. Y si se nos olvida cambiarlo en algún sitio… el software acaba siendo incoherente, “diciendo” cosas diferentes para la misma funcionalidad requerida. Por ello baja la productividad y aumenta la probabilidad de error.
Normalmente un problema de duplicación de código esconde un problema de, o de falta de, diseño software.
Por ello, duplicar código no es buena idea, más aún hoy que existen muchas herramientas de software libre que detectan facilmente el código repetido, ya que, como comentaba el bad smell de Fowler, al hacerlo introducimos “el peor enemigo de la mantenibilidad software”.

ACTUALIZACIÓN

Te dejo alguna referencia interesante:
Copy and paste doesn’t create bad code. Bad programmers create bad code.
Why You Should Use Routines, Routinely
 
 

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “Duplicar, o copy pegar, código no es una buena idea”

  1. Eso de repetir codificación lamentablemente se hace demasiado … Yo personalmente me pregunto que si la gente que hace esa práctica se sentirá pringada o no … Cuando se lo he preguntado a alguno personalmente (algunos ingenieros informáticos) me salen con unas justificaciones que es que si las escuchais os reis..
    Vamos yo estudio una carrera de informática para luego hacer «el burro» o «el paleto», sinceramente mis sensaciones serían de que en la carrera no he aprendido nada y que he tirado el dinero en mis estudios…Hacer eso es una paletada de marca mayor joder…
    Os dejo unos enlaces a lo que he publicado en un par de foros de programación:
    http://www.soloingenieria.net/foros/viewtopic.php?f=23&t=29698
    http://www.forosdelweb.com/f14/ingenieros-informaticos-que-repiten-repiten-vuelven-repetir-codificacion-879246/
    Saludos,

  2. Pingback: Entropía software: controla la calidad o el software se hará con el tiempo menos mantenible | Javier Garzás

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *