Votre définition ne me semble pas correcte. Un idiome est un moyen d'écrire quelque chose qui peut ou non être possible dans d'autres langues, mais qui est courant dans cette langue. Habituellement, c'est plus court que l'alternative, mais ce n'est pas vraiment une exigence.
Il pourrait être plus facile de l'expliquer en parlant de ce qui n'est pas idiomatique. En C ++, c'est assez idiomatique d'écrire:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p)
{
// whatever
}
C'est encore plus idiomatique d'écrire:
Foo* p;
if(p = SomeThingThatReturnsAFooPointer(arg, param, x, y))
{
// whatever
}
Ce code fait exactement la même chose - certaines personnes qui débutent en C ++ peuvent le lire comme un test pour voir si p est égal à ce que renvoie la fonction, mais ce n'est pas ce qu'il fait.
Comparez ce que quelqu'un pourrait écrire, de façon très non idiomatique, qui est venu d'une autre langue:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p !=NULL)
{
// whatever
}
Vous verrez également ce truc comme non idiomatique:
if (x>0)
return true;
else
return false;
Parce que l'approche idiomatique est
return (x>0);
Les manières non idiomatiques ne sont pas mauvaises, mais elles prennent généralement plus de temps à taper et elles prennent toujours plus de temps à lire, pour ceux qui connaissent les idiomes. Si je vous appelle "le garçon qui a crié au loup" et que vous connaissez l'histoire, c'est plus rapide que si je vous explique comment les fausses alarmes font que les gens vous ignorent. Le problème, bien sûr, est que si vous ne connaissez pas l'histoire et ne savez pas ce que les loups ont à voir avec ce dont nous parlons. De même, cela peut être un problème si vous ne l'avez jamais vu return x<y;
auparavant et que vous ne savez vraiment pas ce qu'il fait.