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.
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.
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]
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);
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.
for (int i = 1; i < itemCount; i++)