¿Qué es 'sesgo de código'?

11

En el libro de O'Reilly sobre Scala, leí que el pegado de código crea:

... crea problemas de hincha de código, mantenibilidad y sesgo ,

No puedo ver ninguna definición obvia de la palabra sesgo en contexto. Soy consciente de los problemas de copiar y pegar, pero no puedo hacer que encajen con la palabra 'sesgar'. Dado que esto se usa en un libro de O'Reilly, supongo que es un término de programación real en circulación.

Cualquier puntero?

Joe
fuente

Respuestas:

19

La inclinación en su definición más tradicional significa desalineación (no paralela). Obviamente, cuando se copia y pega el código, las dos copias son idénticas y paralelas. Esto no es un invariante. No se garantiza que los cambios realizados en una copia se realicen a la otra copia (por descuido o ignorancia). Ahora hay dos versiones de código existentes en dos lugares diferentes que están sesgadas (ya no son las mismas). Esto puede conducir a errores extraños cuando el comportamiento parece funcionar en un lugar y no en el otro. Mantenga su código SECO (no lo repita).

EDITAR / ADICIONAR: si tiene ganas de copiar y pegar, lo más probable es que lo que debe hacer sea abstraer el código que está copiando en una superclase compartida (orientada a objetos) o algún tipo de función de utilidad incluida (funcional).

Patrick James McDougle
fuente
+1 para una buena explicación. También para algunas catarsis: tengo que lidiar con una base de código que consta de cientos y cientos de líneas de código de copiar y pegar con exactamente este tipo de problema, que debe corregirse.
KChaloux
2

¿Alguna vez jugaste al teléfono cuando eras niño? Ya sabes, ¿en el que cada persona susurra una frase a la siguiente persona en la fila y al final, la última persona dice la frase en voz alta y todos se ríen de lo diferente que se ha vuelto del original? Eso es sesgado. Cuando copia y pega código, inevitablemente realiza pequeños cambios en una o más de las copias. Y cuanto más a menudo copie y pegue el mismo código, más se acumularán los cambios y el código se desviará del original. He visto código con cientos de bloques copiados y pegados, cada uno de los cuales varía unos pocos caracteres, es casi imposible de mantener. Si desea cortar y pegar una sección de código, probablemente debería considerar al menos ponerla en su propia función.

Jim Nutt
fuente
3
Las diferencias no son causadas por copiar y pegar. Son causados ​​por lo que sucede después de copiar y pegar.
Stephen C
1
Es cierto, pero si el código no hubiera sido copiado y pegado, las diferencias no habrían ocurrido.
Jim Nutt
Es un buen ejemplo, pero la analogía está sesgada del concepto. En la analogía, el pegado crea una copia diferente, mientras que en el concepto real, la copia es la misma, pero no está sincronizada, lo que provoca un sesgo.
Sundeep