Copie superficielle

Définition, exemples et bonnes pratiques

À retenir

  • Ne dupliquez que le contenant, pas le contenu imbriqué.
  • Économe en mémoire et très rapide à exécuter.
  • Risque d'effets de bord si on modifie des données partagées.

Une copie superficielle consiste à créer une nouvelle structure (comme une liste ou un objet) qui contient des références vers les mêmes éléments que l'original. Imaginez que vous photocopiez un carnet d'adresses : vous avez un nouveau carnet, mais les numéros de téléphone à l'intérieur pointent toujours vers les mêmes personnes physiques.

Étymologie

Traduction du concept informatique anglais shallow copy. Le terme « superficielle » indique que l'opération ne traite que l'enveloppe visible (le premier niveau) de la donnée, sans s'occuper de dupliquer ce qui se trouve à l'intérieur des éléments imbriqués.

Exemples d'usage

  • En JavaScript, utiliser l'opérateur de décomposition [...maListe] crée une nouvelle liste, mais si les éléments sont des objets, ils restent partagés avec l'ancienne.
  • En Python, la méthode liste.copy() génère une copie de surface.

Cas d'usage

On utilise la copie superficielle pour manipuler l'organisation d'une collection (trier, filtrer) sans consommer trop de mémoire, puisque les données volumineuses contenues à l'intérieur ne sont pas réellement dupliquées.

Bonnes pratiques

Il faut être extrêmement vigilant lorsque les données contiennent des sous-objets modifiables. Si vous modifiez un sous-élément dans la copie, l'original sera lui aussi impacté. Si vous avez besoin d'une isolation totale entre l'original et la copie, préférez une copie profonde.

Synonymes

copie de surface shallow copy

Antonymes

copie profonde deep copy clonage complet

Conseil

Pour débuter, retenez que la plupart des fonctions de copie standard dans les langages modernes (comme slice() en JS ou copy() en Python) sont superficielles par défaut. Testez toujours votre code en modifiant une propriété imbriquée pour vérifier le comportement.

Questions fréquentes

Pourquoi ma copie modifie-t-elle l'original ?

C'est le comportement typique d'une copie superficielle : les deux structures partagent les mêmes références vers les objets internes.

Quand l'utiliser ?

Quand vos données sont simples (nombres, textes) ou quand vous voulez volontairement partager les mêmes objets pour gagner en performance.