Hace poco, hablando con algunos de los desarrolladores de un equipo al que me tocó apoyar por un tiempo, le decía qué hacer copy-paste al momento de estar desarrollando era “del diablo”.
Estuvimos discutiendo un rato al respecto, y me preguntaban si yo nunca lo hacía: mi respuesta fue que la mayoría de las veces no, y las razones son las siguientes:
La repetición es buena para entender
Si tú hiciste el código, al repetirlo puedes validar la lógica que te llevó a ello. Hay una estrategia de aprendizaje comprobada que se llama repetición espaciada, que se refiere precisamente al hecho de que repetir algo te ayuda a entenderlo más fácilmente. Tampoco se trata de repetir como loros (grabadoras o cualquiera analogía que te hayan dicho en la primaria acerca de esto). Pero es muy importante no codificar en piloto automático. NUNCA.
Pierdes la oportunidad de aprender
Si no lo escribiste tú, al solamente agregar lo que otro hizo sin analizarlo, dejas de racionalizar lo que se está buscando; nos perdemos del proceso que esa persona llevó para lograr la solución. No se trata de reinventar la rueda, pero sí de analizarla, ajustarla a nuestras necesidades y lograr un entendimiento que nos ayude a en el futuro tener más armas para resolver problemas.
No te asegura que no haya errores
Imagina la palabra entreprenuer. Tener que escribir continuamente esas 12 letras cada vez puede ser engorroso, por lo que copiarlas y pegarlas es sumamente tentador. Total, estas hablando de lo mismo en distintos lados. Hasta que te notas después que se escribe entrepreneur. Peor aún cuando tienes una mezcla de palabras correctas e incorrectas. O variables.
Lo mismo pasa con un segmento de código.
Una sóla representación no ambigua dentro del sistema.
O lo que es lo mismo, pues el principio DRY. Tristemente es un problema común en los proyectos. Microsoft tiene una gran herramienta para detectar si lo estas haciendo en el tuyo.
¿Cuando sí?
Esas son algunas de mis razones del porqué no. Pero como mencioné arriba hay algunas excepciones (creo que obviamente) lógicas.
- URLs
- Application Keys y Secrets
- Algunas contraseñas
- Payloads de llamadas de APIs
En general, cualquier cosa que no se interponga en o haga daño al proceso de aprender o entender algo, no tengo problema en copiarlo. Lo demás, prefiero escribirlo nuevamente.