Programación de copiar y pegar
La programación de copiar y pegar, a veces denominada simplemente pegar, es la producción de un código de programación de computadora altamente repetitivo, producido por las operaciones de copiar y pegar. Es principalmente un término peyorativo; aquellos que usan el término a menudo implican una falta de competencia de programación. También puede ser el resultado de limitaciones tecnológicas (por ejemplo, un entorno de desarrollo insuficientemente expresivo) ya que normalmente se utilizarían subrutinas o bibliotecas. Sin embargo, hay ocasiones en que la programación de copiar y pegar se considera aceptable o necesaria, como el desenroscado de bucles (Cuando no es soportado automáticamente por el compilador), o ciertos modismos de programación, y algunos editores de código de la fuente en forma de snippets.
Origen
Copiar y pegar a menudo es realizado por programadores inexpertos o estudiantes, que encuentran el acto de escribir código desde cero difícil o irritante y prefieren buscar una solución preescrita o una solución parcial que puedan usar como base para resolver sus propios problemas.[1]
Un problema mayor es que bugs pueden ser fácilmente introducido por suposiciones y decisiones de diseño hechos en las distintas fuentes que no aplican cuando son usadas en otro ambiente de desarrollo.
Copiar y pegar en la programación también puede ser el resultado de una mala comprensión de las características comunes en los lenguajes de computadora, tales como estructuras de bucle, funciones y subrutinas.
Elección deliberada como patrón diseño
La programación de copiar y pegar se acepta ocasionalmente como una técnica de programación válida. Esto se ve más comúnmente en "boilerplate", como declaraciones de clase o importación de bibliotecas estándar, o al usar una plantilla de código existente (con contenido vacío o funciones de código auxiliar) como marco para completar.
Ejemplo
Un ejemplo sencillo es un bucle for el cual podría ser expresado como for (int i=0; i!=n; ++i) {}
.
El código de muestra que utiliza tal bucle for podría ser:
void foo(int n) {
for (int i=0; i!=n; ++i) {
/* body */
}
}
El bucle podría haber sido generado por el siguiente snippet (especificando tipos y nombres variables):
for ($type $loop_var = 0; $loop_var != $stop; ++$loop_var) {
/* body */
}
Véase también
Referencias
- «Revisiting Novice Programmers Errors». acm.org. Consultado el 4 de junio de 2008.