J'ai vaguement survolé tous ces tutoriels sur les génériques, en m'attardant surtout sur celui de
sjrd (
Les génériques avec Delphi 2009 Win32).
J'imagine que chaque tutoriel a ses propres objectifs et il est fort possible que mes commentaires qui suivent soient partiellement ou totalement hors-sujet.
Disons qu'il s'agit plus d'un éclairage sur les génériques en général, de la façon de les comprendre et de les présenter, que d'une critique du présent tutoriel.
Selon moi la notion de type générique est souvent introduite d'une façon trop indépendante des notions déjà acquises :
- la généricité c'est avant tout paramétrer les types par des types
- du coup on a des types arguments formels et des types arguments réels
- la généricité se comporte d'une façon très similaire à l'application de fonction quant au nombre et à la compatibilité des types arguments
Envoyé par
Créer ses propres classes génériques
public class Vehicule <ClassChassis, ClassMoteur, ClassRoues>
Cette syntaxe définit trois types manipulés au sein de ma classe (ClassChassis, ClassMoteur, ClassRoues)
Ce sont 3 types
formels.
À mon avis le but d'un tutoriel sur la généricité c'est d'expliquer la différence entre types paramétrés, types concrêts, types formels et types réels. Ne pas expliquer cette différence c'est laisser le lecteur dans son ignorance du mécanisme de la généricité.
C'est tout simple :
- List<T> est un type paramétré où T est le type argument formel
- List<Int32> est un type concrêt où Int32 est le type argument réel
(ceux qui liront
mon tutoriel sur les modules d'ordre supérieur pourront constater que ça marche aussi avec les modules, modules paramétrés, modules concrêts, modules formels et modules réels. en fait on a tout dit quand on a dit qu'un type générique est un type d'ordre supérieur)
On a tout intérêt à réutiliser le vocabulaire connu surtout quand il est simple, clair et systématique.
Une fois qu'on a introduit ces notion basiques on peut passer plus sereinement aux notions avancées (généricité contrainte, covariance/contravariance, traits,...) qui sont plus spécifiques à chaque langage. À la limite on devrait avoir un template de tutoriel sur les génériques, valable pour tous les langages majeurs du forum et qu'on spécialiserait pour chacun d'eux. En l'absence d'un tel tutoriel générique je suis d'avis que celui de
sjrd est un modèle à imiter sans modération.
0 |
0 |