J'ai trouvé cet article à la recherche d'idiomes communs au C ++, car je m'y suis intéressé assez récemment et j'aimerais que mon code ne paraisse pas aussi amateur que je le pense ... :-P
Après avoir passé pas mal de temps avec Perl, j’ai trouvé que les idiomes de cette langue ressemblaient beaucoup à ceux que l’on trouve dans les langues naturelles, comme l’anglais ou l’espagnol (seulement deux que je connais assez bien pour connaître certains idiomes).
Je ne suis pas d'accord pour dire qu'un idiome est comme un "petit motif de conception". Je ne suis toujours pas d'accord, bien que ce soit moins vrai, qu'un idiome est un moyen de contourner une déficience d'une langue.
Peut-être que la réponse de Luc Danton est la plus proche, mais laissez-moi vous expliquer. Je pense qu'un idiome est, bien, idiomatique de ceux qui utilisent la langue. Habituellement, une expression courante ou une séquence d'expressions qui, sans être peut-être évidentes, effectuent une opération ou expriment une intention d'une manière qui ait un sens pour ceux qui sont suffisamment fluides pour l'avoir vue auparavant.
De retour à Perl, l'idiome le plus connu est peut-être la " transformation de Schwartzian ", une expression qui effectue un tri des données de manière compacte et efficace. Ce n’est pas la façon la plus évidente de réaliser une telle opération, mais c’est succinct, et ceux qui l’ont vue auparavant savent immédiatement ce qu’elle fait.
Un autre exemple notable est " The Orcish Maneuver ", qui tire parti des notions de vrai / faux, d'opérateurs riches et de priorité des opérateurs de Perl.
Celui que j’ai personnellement beaucoup aimé est en quelque sorte lié à la manœuvre orque, mais je ne connais pas de nom pour cela:
push @{ $some_hash{$key} ||= [] }, $some_value;
Ce n’est en effet pas un obscurcissement, mais plutôt une expression claire et compacte de quelque chose qui, autrement, exigerait plusieurs lignes. Si la clé est présente dans le hachage et a une valeur true, annulez-la en tant que tableau et poussez $ some_value sur ce tableau. Si l'élément de hachage n'est pas présent ou a une valeur false, affectez-lui un tableau vide, déréférencerez ce tableau et effectuez le push.
Il est également intéressant de noter que depuis Perl 5.14, une partie de cet idiome est obsolète - push peut désormais fonctionner directement sur la référence du tableau, sans @ {} nécessaire! De plus, à partir de Perl 5.10, on peut utiliser // = au lieu de || = qui vérifie non pas la vérité, mais bien la définition.