PRATIQUE ALGO/METHODES 
Expliquez-moi... Le duck typing : la valeur détermine le comportement
 
Nouvelle appellation dans le monde des typages alternatifs, le duck typing est mis en avant par des langages comme Python et Ruby, et cherche à libérer des contraintes du typage explicite. (05/10/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

L'activité autour du développement Rails et Ruby, notamment leurs performances, fait remonter un débat déjà abordé par de précédents langages, à commencer par Smalltalk, et repris par Python. Dans le cadre des langages de script dynamiques, les objets sont en réalité des valeurs. Il n'est donc pas nécessaire de différencier type et valeur, ni même de s'occuper de type. Le langage s'occupe de vérifier les types au dernier moment, ce qui accélère sensiblement le cycle de développement.

L'idée du duck typing va un peu plus loin : connaître le type même d'une valeur n'a aucune importance, il faut avant tout s'assurer qu'on peut lui appliquer les traitements souhaités. À partir du moment où l'on peut additionner deux valeurs et obtenir un nombre, on peut déduire son type. Des valeurs ont le même type si et seulement si elles partagent les mêmes méthodes et comportements.

D'où la définition du duck test ayant abouti à cette sorte de typage : If it walks like a duck and quacks like a duck, it must be a duck ("si ça marche comme un canard et si ça cancane comme un canard, alors ce doit être un canard", ce qui pourrait se traduire par "typage Canada Dry"). Le principe est donc de ne pas forcer le programme à utiliser une classe donnée, mais de l'obliger à mettre les données dans un format que nous voulons utiliser.

Le danger reste, que le compilateur n'est assuré de rien : il n'est pas possible de connaître la justesse d'un code tant qu'il n'a pas été compilé. Mais un avantage est de développer sa propre vision du code, et obtenir une meilleure flexibilité lors de son remaniement. Le duck typing n'est pas forcément pour les développeurs, mais les langages comme Ruby et Python mettent cette méthode en avant.

Ces deux langages mettent en effet très en avant le duck typing, qui est même une manière "pythonique" de développer. Les défenseurs de cette technique compensent le manque de fiabilité offert normalement par le typage explicite, par la recommandation d'utiliser le plus souvent possible des tests unitaires. A chacun alors de trouver son avantage en termes de productivité.

 
Rédaction JDN Développeurs
 
 
Accueil | Haut de page