Qu'est-ce que le «biais de code»?

11

Dans le livre O'Reilly sur Scala, j'ai lu que le copier-coller de code crée:

... crée des problèmes de surcharge de code, de maintenabilité et de biais ,

Je ne vois aucune définition évidente du mot asymétrique dans son contexte. Je suis conscient des problèmes de copier-coller, mais je ne peux pas les adapter au mot «biais». Comme cela est utilisé dans un livre O'Reilly, je suppose que c'est un vrai terme de programmation en circulation.

Des pointeurs?

Joe
la source

Réponses:

19

Le biais dans sa définition la plus traditionnelle signifie non aligné (pas parallèle). Évidemment, lorsque le code est copié et collé, les deux copies sont identiques et parallèles. Ce n'est pas un invariant. Les modifications apportées à une copie ne sont pas garanties de se rendre à l'autre copie (en raison de la négligence ou de l'ignorance). Maintenant, il existe deux versions de code existant à deux endroits différents qui sont asymétriques (plus les mêmes). Cela peut conduire à des bugs étranges lorsque le comportement semble fonctionner à un endroit et pas à l'autre. Gardez votre code SEC (ne vous répétez pas).

EDIT / ADDITION: Si vous avez envie de copier et coller, il est plus que probable que vous devez faire est d'abstraire le code que vous copiez dans une superclasse partagée (orientée objet) ou une sorte de fonction utilitaire incluse (fonctionnelle).

Patrick James McDougle
la source
+1 pour une bonne explication. Aussi pour certains catharsis - je dois faire face à une base de code qui se compose de centaines et de centaines de lignes de code copier-coller avec exactement ce genre de problème, qui doit être corrigé.
KChaloux
2

Avez-vous déjà joué au téléphone comme un enfant? Vous savez, celui où chaque personne chuchote une phrase à la prochaine personne en ligne et à la fin, la dernière personne dit la phrase à haute voix et tout le monde rit à quel point elle est devenue différente de l'original? C'est asymétrique. Lorsque vous copiez et collez du code, vous effectuez inévitablement de petites modifications dans une ou plusieurs des copies. Et plus vous copiez et collez souvent le même code, plus les modifications s'accumulent et le code est biaisé par rapport à l'original. J'ai vu du code avec des centaines de blocs copiés et collés, chacun variant les uns des autres de quelques caractères, c'est presque impossible à maintenir. Si vous souhaitez couper et coller une section de code, vous devriez probablement au moins envisager de la mettre dans sa propre fonction.

Jim Nutt
la source
3
Les différences ne sont pas causées par le copier-coller. Ils sont causés par ce qui se passe après le copier-coller.
Stephen C
1
C'est vrai, mais si le code n'avait pas été copié et collé, les différences ne se seraient pas produites.
Jim Nutt
C'est un bon exemple, mais l'analogie est biaisée par rapport au concept. Dans l'analogie, le collage crée une copie différente, tandis que dans le concept réel, la copie est la même, mais n'est pas synchronisée, ce qui provoque un décalage.
Sundeep