À retenir
- Réutilisabilité : On écrit le code une seule fois pour une infinité de types.
- Fiabilité : Les erreurs de type sont détectées dès la compilation, et non pendant que le programme tourne.
- Performance : Elle évite souvent des conversions de données coûteuses (le boxing/unboxing).
La généricité est une technique de programmation qui permet de concevoir des outils (comme des fonctions ou des listes) capables de manipuler différents types de données sans avoir à être réécrits pour chacun d'eux. C'est un peu comme un moule universel qui s'adapterait automatiquement au contenu que l'on y verse, que ce soit du plâtre, du chocolat ou de la résine.
Étymologie
Vient du latin genus qui signifie « genre » ou « type ». En informatique, ce concept a émergé pour répondre au besoin de réutiliser du code de manière sécurisée, notamment popularisé par le langage Ada, puis par les « templates » en C++ et les « generics » en Java et C#.
Exemples d'usage
- Une liste générique : on programme une seule fois le fonctionnement d'une liste, et on peut ensuite l'utiliser pour stocker des nombres, des textes ou des fiches clients.
- Une fonction de tri : un seul algorithme capable de trier n'importe quel élément (prix, dates, noms), tant que ces éléments peuvent être comparés entre eux.
Cas d'usage
La généricité intervient massivement dans la création de bibliothèques de structures de données (piles, files, dictionnaires) et dans le développement d'algorithmes universels. Elle est essentielle pour créer des frameworks robustes et évolutifs.
Bonnes pratiques
Utilisez la généricité pour appliquer le principe DRY (Don't Repeat Yourself) et éviter la duplication de code. Cependant, veillez à ne pas créer des types trop abstraits qui rendraient la lecture du code difficile. Il est souvent utile d'ajouter des contraintes (par exemple, préciser que le type générique doit obligatoirement être un nombre) pour éviter des erreurs inattendues.
Synonymes
Antonymes
Conseil
Pour bien comprendre, visualisez la généricité comme une fonction qui, au lieu de prendre des valeurs en paramètres, prendrait des types de données en paramètres. Si vous vous retrouvez à copier-coller une fonction juste pour changer le type des arguments, c'est le signe qu'il faut utiliser la généricité.
Questions fréquentes
Quelle est la différence avec le type 'Any' ou 'Object' ?
Utiliser 'Object' oblige souvent à convertir manuellement les données ensuite (risque d'erreur), alors que la généricité conserve l'information du type exact dès le départ.
Est-ce que la généricité ralentit le programme ?
Généralement non. Dans beaucoup de langages (comme C++ ou Rust), le compilateur génère un code optimisé pour chaque type utilisé, ce qui est très performant.
C'est quoi le 'T' que l'on voit souvent ?
C'est une convention de nommage. Le 'T' signifie 'Type' et sert de variable temporaire pour représenter le futur type de donnée qui sera utilisé.