Ihre Definition scheint mir nicht richtig zu sein. Ein Idiom ist eine Art, etwas zu schreiben, das in anderen Sprachen möglich oder nicht möglich ist, aber in dieser Sprache üblich ist. Normalerweise ist es kürzer als die Alternative, aber das ist eigentlich keine Voraussetzung.
Es könnte einfacher sein, es zu erklären, indem man darüber spricht, was nicht idiomatisch ist. In C ++ ist es ziemlich idiomatisch zu schreiben:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p)
{
// whatever
}
Es ist noch idiomatischer zu schreiben:
Foo* p;
if(p = SomeThingThatReturnsAFooPointer(arg, param, x, y))
{
// whatever
}
Dieser Code macht genau das Gleiche - einige Leute, die C ++ noch nicht kennen, lesen ihn möglicherweise als Test, um festzustellen, ob p dem entspricht, was die Funktion zurückgibt, aber das ist nicht der Fall.
Vergleichen Sie mit dem, was jemand sehr unidiomatisch schreiben könnte, der aus einer anderen Sprache stammt:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p !=NULL)
{
// whatever
}
Sie werden auch dieses Zeug als nicht idiomatisch empfinden:
if (x>0)
return true;
else
return false;
Weil der idiomatische Ansatz ist
return (x>0);
Die nicht-idiomatischen Methoden sind nicht falsch, aber für diejenigen, die die Redewendungen kennen, dauert das Tippen in der Regel länger und das Lesen dauert immer länger. Wenn ich dich "der Junge, der den Wolf geweint hat" nenne und du die Geschichte kennst, ist es schneller, als wenn ich erkläre, wie falsche Alarme dazu führen, dass die Leute dich ignorieren. Das Problem ist natürlich, wenn Sie die Geschichte nicht kennen und nicht wissen, was Wölfe mit dem zu tun haben, worüber wir sprechen. Ebenso kann es ein Problem sein, wenn Sie es noch nie gesehen return x<y;
haben und wirklich nicht wissen, was es tut.