Saya menemukan posting ini sedang mencari idiom C ++ umum, karena saya telah mendapatkan cukup dalam ke dalamnya baru-baru ini dan ingin kode saya tidak terlihat seperti amatir seperti yang saya rasakan ... :-P
Setelah menghabiskan sedikit waktu dengan Perl, saya menemukan idiom dalam bahasa itu sangat mirip dengan yang ditemukan dalam bahasa alami, seperti bahasa Inggris atau Spanyol (hanya dua yang saya kenal cukup baik untuk mengetahui beberapa idiom).
Saya tidak setuju bahwa idiom seperti "pola desain kecil". Saya masih tidak setuju, meskipun kurang begitu, bahwa idiom adalah cara untuk mengatasi kekurangan dalam bahasa.
Mungkin jawaban Luc Danton paling dekat, tetapi izinkan saya menjelaskannya. Saya pikir idiom adalah, baik, idiomatis dari mereka yang menggunakan bahasa tersebut. Biasanya, ekspresi umum atau urutan ekspresi yang, meskipun mungkin tidak jelas, melakukan operasi atau mengekspresikan niat dengan cara yang masuk akal bagi mereka yang cukup fasih untuk melihatnya sebelumnya.
Kembali ke Perl, mungkin idiom paling terkenal adalah " Schwartzian Transform ", sebuah ekspresi yang melakukan pengurutan data dengan cara yang ringkas dan efisien. Ini bukan cara yang paling jelas untuk melakukan operasi seperti itu, tetapi ini singkat dan mereka yang telah melihatnya sebelumnya tahu langsung apa yang dilakukannya.
Contoh penting lainnya adalah " The Orcish Maneuver ", yang mengambil keuntungan dari gagasan perl tentang benar / salah, operator kaya, dan prioritas operator.
Salah satu yang secara pribadi saya suka agak terkait dengan Manuver Orc, tapi saya tidak tahu nama untuk itu:
push @{ $some_hash{$key} ||= [] }, $some_value;
Ini memang bukan kebingungan, melainkan ekspresi yang jelas dan kompak dari sesuatu yang seharusnya mengambil beberapa baris untuk dilakukan. Jika kunci ada di hash dan memiliki nilai sebenarnya, de-referensi sebagai array dan dorong $ some_value ke array itu. Jika elemen hash tidak ada atau memiliki nilai salah, tetapkan itu array kosong, lalu ganti array itu dan lakukan push.
Perlu juga dicatat bahwa pada Perl 5.14, bagian dari idiom ini sudah usang - push sekarang dapat beroperasi langsung pada referensi array, tidak diperlukan @ {}! Juga, pada Perl 5.10, seseorang dapat menggunakan // = bukannya || = yang memeriksa bukan untuk kebenaran tetapi untuk definisi-ness.