Saya akan tertarik dengan beberapa contoh c # sebelum dan sesudah, beberapa contoh non-idiomatik vs idiomatik. Contoh non-c # akan baik-baik saja jika mereka menyampaikan idenya. Terima kasih.
Fitur tersembunyi C # penuh dengan idiomatik C #. Tidak semuanya mempedulikan Anda, tetapi banyak kalimat sederhana dengan jumlah suara positif yang tinggi dapat dianggap idiomatis. Dan beberapa jawaban juga menggambarkan alternatif non-idiomatik.
Michiel van Oosterhout
Jawaban:
122
Idiomatik berarti mengikuti konvensi bahasa. Anda ingin menemukan cara termudah dan paling umum untuk menyelesaikan tugas daripada mentransfer pengetahuan Anda dari bahasa yang berbeda.
python non-idiomatik menggunakan loop dengan menambahkan:
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
newlist.append(i * 2)
python idiomatik menggunakan pemahaman daftar:
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist]
Kode idiomatik adalah kode yang melakukan tugas umum dengan cara yang umum untuk bahasa Anda. Ini mirip dengan pola desain, tetapi pada skala yang jauh lebih kecil. Idiom sangat berbeda menurut bahasa. Satu idiom di C # mungkin menggunakan iterator untuk mengulang melalui koleksi daripada mengulanginya. Bahasa lain tanpa iterator mungkin mengandalkan idiom loop.
Secara praktis, ini berarti menulis kode dengan cara yang konsisten, yaitu semua pengembang yang bekerja pada basis kode Anda harus mengikuti konvensi yang sama saat menulis konstruksi kode yang serupa.
Jadi cara idiomatik adalah cara yang sesuai dengan gaya kode lain, cara non-idiomatik berarti Anda menulis jenis fungsi tetapi dengan cara yang berbeda.
misalnya jika Anda mengulang sejumlah item, Anda dapat menulis loop dengan beberapa cara:
for (int i = 0; i < itemCount; i++)
for (int i = 1; i <= itemCount; i++)
for (int i = 0; i < itemCount; ++i)
dll
Yang terpenting adalah gaya yang dipilih digunakan secara konsisten. Dengan begitu, orang menjadi sangat akrab dan percaya diri dengan cara menggunakannya, dan ketika Anda melihat penggunaan yang terlihat berbeda, itu bisa menjadi tanda adanya kesalahan, mungkin kesalahan satu per satu, mis.
Saya kira saya pikir idiomatik berarti "cara terbaik" sebagai lawan dari standar yang sewenang-wenang. Tapi saya rasa cara terbaik bergantung pada konteks.
Jawaban:
Idiomatik berarti mengikuti konvensi bahasa. Anda ingin menemukan cara termudah dan paling umum untuk menyelesaikan tugas daripada mentransfer pengetahuan Anda dari bahasa yang berbeda.
python non-idiomatik menggunakan loop dengan menambahkan:
mylist = [1, 2, 3, 4] newlist = [] for i in mylist: newlist.append(i * 2)
python idiomatik menggunakan pemahaman daftar:
mylist = [1, 2, 3, 4] newlist = [(i * 2) for i in mylist]
sumber
Beberapa contoh:
Manajemen sumber daya , tidak idiomatik:
string content; StreamReader sr = null; try { File.OpenText(path); content = sr.ReadToEnd(); } finally { if (sr != null) { sr.Close(); } }
Idiomatis:
string content; using (StreamReader sr = File.OpenText(path)) { content = sr.ReadToEnd(); }
Iterasi , non idiomatik:
for (int i=0;i<list.Count; i++) { DoSomething(list[i]); }
Juga non-idiomatik:
IEnumerator e = list.GetEnumerator(); do { DoSomenthing(e.Current); } while (e.MoveNext());
Idiomatis:
foreach (Item item in list) { DoSomething(item); }
Penyaringan , non-idiomatik:
List<int> list2 = new List<int>(); for (int num in list1) { if (num>100) list2.Add(num); }
idiomatis:
var list2 = list1.Where(num=>num>100);
sumber
Kode idiomatik adalah kode yang melakukan tugas umum dengan cara yang umum untuk bahasa Anda. Ini mirip dengan pola desain, tetapi pada skala yang jauh lebih kecil. Idiom sangat berbeda menurut bahasa. Satu idiom di C # mungkin menggunakan iterator untuk mengulang melalui koleksi daripada mengulanginya. Bahasa lain tanpa iterator mungkin mengandalkan idiom loop.
sumber
Di PHP saya terkadang menemukan kode seperti:
foreach ($array as $value) { $trimmed[] = trim($value); } return $trimmed;
Yang secara idiomatis dapat diimplementasikan dengan:
return array_map('trim', $array);
sumber
Secara praktis, ini berarti menulis kode dengan cara yang konsisten, yaitu semua pengembang yang bekerja pada basis kode Anda harus mengikuti konvensi yang sama saat menulis konstruksi kode yang serupa.
Jadi cara idiomatik adalah cara yang sesuai dengan gaya kode lain, cara non-idiomatik berarti Anda menulis jenis fungsi tetapi dengan cara yang berbeda.
misalnya jika Anda mengulang sejumlah item, Anda dapat menulis loop dengan beberapa cara:
for (int i = 0; i < itemCount; i++) for (int i = 1; i <= itemCount; i++) for (int i = 0; i < itemCount; ++i)
dll
Yang terpenting adalah gaya yang dipilih digunakan secara konsisten. Dengan begitu, orang menjadi sangat akrab dan percaya diri dengan cara menggunakannya, dan ketika Anda melihat penggunaan yang terlihat berbeda, itu bisa menjadi tanda adanya kesalahan, mungkin kesalahan satu per satu, mis.
for (int i = 1; i < itemCount; i++)
sumber