Definisi Anda tidak menganggap saya benar. Sebuah idiom adalah cara menulis sesuatu yang mungkin atau mungkin tidak dapat dilakukan dalam bahasa lain, tetapi itu biasa dalam bahasa ini. Biasanya, ini lebih pendek daripada alternatifnya, tapi itu bukan persyaratan.
Mungkin lebih mudah untuk menjelaskannya dengan berbicara tentang apa yang non-idiomatis. Dalam C ++, cukup idiomatis untuk menulis:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p)
{
// whatever
}
Menulis lebih idiomatis:
Foo* p;
if(p = SomeThingThatReturnsAFooPointer(arg, param, x, y))
{
// whatever
}
Kode ini melakukan hal yang persis sama - beberapa orang yang baru mengenal C ++ mungkin membacanya sebagai pengujian untuk melihat apakah p sama dengan apa fungsi kembali, tetapi bukan itu yang dilakukannya.
Bandingkan dengan apa yang ditulis seseorang, sangat non-idiomatis, yang berasal dari bahasa lain:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p !=NULL)
{
// whatever
}
Anda juga akan melihat barang-barang ini mengetuk sebagai non-idiomatik:
if (x>0)
return true;
else
return false;
Karena pendekatan idiomatik adalah
return (x>0);
Cara-cara non-idiomatis tidak salah, tetapi mereka biasanya membutuhkan waktu lebih lama untuk mengetik dan mereka selalu membutuhkan waktu lebih lama untuk membaca, bagi mereka yang tahu idiom. Jika saya menyebut Anda "bocah yang menangis serigala" dan Anda tahu ceritanya, itu lebih cepat daripada jika saya menjelaskan tentang bagaimana alarm palsu menyebabkan orang mengabaikan Anda. Masalahnya, tentu saja, adalah jika Anda tidak tahu ceritanya dan tidak tahu apa yang harus dilakukan serigala dengan apa yang kita bicarakan. Demikian pula, itu bisa menjadi masalah jika Anda belum pernah melihat return x<y;
sebelumnya dan benar-benar tidak tahu apa fungsinya.