Deyimsel kod nedir?


87

Bazı öncesi ve sonrası c # örnekleri, bazı deyimsel olmayan ve deyimsel örneklerle ilgileniyorum. C # olmayan örnekler de fikri aktarırlarsa iyi olur. Teşekkürler.


3
C # ' ın gizli özellikleri deyimsel C # ile doludur. Bunların hepsi sizi ilgilendirmiyor, ancak çok sayıda olumlu oy içeren basit tek satırlıkların çoğu deyimsel olarak kabul edilebilir. Ve bazı cevaplar deyimsel olmayan alternatifleri de tanımlar.
Michiel van Oosterhout

Yanıtlar:


122

Deyimsel, dilin kurallarına uymak anlamına gelir. Bilginizi farklı bir dilden aktarmak yerine, bir görevi gerçekleştirmenin en kolay ve en yaygın yollarını bulmak istersiniz.

ekli bir döngü kullanan deyimsel olmayan python:

mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
    newlist.append(i * 2)

bir liste anlama kullanarak deyimsel python:

mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist] 

36

Bazı örnekler:

Kaynak yönetimi , deyimsel olmayan:

string content;
StreamReader sr = null;
try {
    File.OpenText(path);
    content = sr.ReadToEnd();
}
finally {
    if (sr != null) {
        sr.Close();
    }
}

Deyimsel:

string content;
using (StreamReader sr = File.OpenText(path)) {
    content = sr.ReadToEnd();
}

İterasyon , deyimsel olmayan:

for (int i=0;i<list.Count; i++) {
   DoSomething(list[i]);
}

Ayrıca deyimsel olmayan:

IEnumerator e = list.GetEnumerator();
do {
   DoSomenthing(e.Current);
} while (e.MoveNext());

Deyimsel:

foreach (Item item in list) {
   DoSomething(item);
}

Filtreleme , deyimsel olmayan:

List<int> list2 = new List<int>();
for (int num in list1) {
  if (num>100) list2.Add(num);
}

deyimsel:

var list2 = list1.Where(num=>num>100);


15

Deyimsel kod, diliniz için ortak bir şekilde ortak bir görevi yerine getiren koddur. Bir tasarım modeline benzer, ancak çok daha küçük bir ölçekte. Deyimler dile göre büyük ölçüde farklılık gösterir. C # 'teki bir deyim, bir koleksiyonda döngü yapmak yerine yineleme yapmak için bir yineleyici kullanmak olabilir. Yineleyici olmayan diğer diller döngü deyimine güvenebilir.


6

PHP'de bazen aşağıdaki gibi kodlarla karşılaşıyorum:

foreach ($array as $value) {
    $trimmed[] = trim($value);
}
return $trimmed;

Hangi deyimsel olarak aşağıdakilerle uygulanabilir:

return array_map('trim', $array);

5

Pratik olarak, tutarlı bir şekilde kod yazmak anlamına gelir, yani kod tabanınızda çalışan tüm geliştiriciler, benzer kod yapıları yazarken aynı kuralları takip etmelidir.

Yani deyimsel yol, diğer kodun tarzına uyan yoldur, deyimsel olmayan yol, işlev türünü farklı bir şekilde yazdığın anlamına gelir.

Örneğin, belirli sayıda öğeyi döngüye sokuyorsanız, döngüyü birkaç yolla yazabilirsiniz:

for (int i = 0; i < itemCount; i++)

for (int i = 1; i <= itemCount; i++)

for (int i = 0; i < itemCount; ++i)

vb

En önemlisi, seçilen stilin tutarlı kullanılmasıdır. Bu şekilde insanlar nasıl kullanılacağına çok aşina ve kendinden emin hale gelirler ve farklı görünen bir kullanımı gözetlediğinizde, bu bir hatanın ortaya çıkmasının bir işareti olabilir, belki de tek bir hatayla, örneğin

for (int i = 1; i < itemCount; i++)

2
Sanırım ben deyimsel ifadenin sadece keyfi bir standarttan ziyade "en iyi yol" anlamına geldiğini düşündüm. Ama sanırım en iyi yol bağlama bağlı.
MrBoJangles
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.