O que é 'distorção de código'?

11

No livro O'Reilly sobre Scala, li que copiar e colar código cria:

... cria problemas de inchaço do código, manutenção e inclinação ,

Não vejo definições óbvias da palavra distorção no contexto. Estou ciente dos problemas de copiar e colar, mas não consigo ajustá-los à palavra 'skew'. Como isso é usado em um livro da O'Reilly, acho que é um termo de programação real em circulação.

Alguma dica?

Joe
fonte

Respostas:

19

Inclinar em sua definição mais tradicional significa fora de alinhamento (não paralelo). Obviamente, quando o código é copiado e colado, as duas cópias são idênticas e paralelas. Isso não é invariável. Não é garantido que as alterações feitas em uma cópia sejam feitas na outra cópia (devido a descuido ou ignorância). Agora, existem duas versões de código existentes em dois locais diferentes que são distorcidos (não são mais os mesmos). Isso pode levar a erros estranhos quando o comportamento parece funcionar em um lugar e não no outro. Mantenha seu código SECO (não se repita).

EDIÇÃO / ADIÇÃO: Se você deseja copiar e colar, é mais provável que você deva abstrair o código que está copiando em uma superclasse compartilhada (orientada a objetos) ou algum tipo de função de utilitário incluída (funcional).

Patrick James McDougle
fonte
+1 para uma boa explicação. Também para alguma catarse - eu tenho que lidar com uma base de código que consiste em centenas e centenas de linhas de código de copiar e colar com exatamente esse tipo de problema, que precisa ser corrigido.
KChaloux
2

Já jogou o jogo Telefone quando criança? Você sabe, aquele em que cada pessoa sussurra uma frase para a próxima pessoa na fila e no final, a última pessoa diz a frase em voz alta e todo mundo ri de quão diferente ela se tornou do original? Isso é distorcido. Quando você copia e cola código, inevitavelmente faz pequenas alterações em uma ou mais cópias. E quanto mais você copia e cola o mesmo código, mais as alterações são acumuladas e o código se desvia do original. Eu vi código com centenas de blocos de cópia e colado, cada um variando do outro por apenas alguns caracteres, é quase impossível de manter. Se você deseja cortar e colar uma seção de código, provavelmente deve pelo menos considerar colocá-la em sua própria função.

Jim Nutt
fonte
3
As diferenças não são causadas pela copiar e colar. Eles são causados ​​pelo que acontece após a copiar e colar.
Stephen C
1
É verdade, mas se o código não tivesse sido copiado e colado, as diferenças não teriam ocorrido.
Jim Nutt
É um bom exemplo, mas a analogia é distorcida do conceito. Na analogia, a pasta cria uma cópia diferente, enquanto no conceito real, a cópia é a mesma, mas não é sincronizada, causando a inclinação.
Sundeep