2010-08-16 20 views
6

İşte yazdığım bir örnekte if-else dalları ve koruma ifadeleri kullanılıyor. Bir diğeri ne zaman daha uygun? Bunu bilmek istememin temel nedeni, dillerin genellikle bir şeyler yapmanın deyimsel bir yoluna sahip olması.Güvenlik ifadeleri ne zaman uygundur?

test1 a b = 
    if mod b 3 ≡ 0 then a + b 
    else if mod b 5 ≡ 0 then a + b 
    else a 

test2 a b 
    | mod b 3 ≡ 0 = a + b 
    | mod b 5 ≡ 0 = a + b 
    | otherwise = a 

cevap

11

Verdiğiniz örnek, gardiyanların nasıl daha iyi olduğuna dair çok iyi bir gösteridir.

Muhafızlarla birlikte, çok basit ve okunabilir bir koşul ve sonuç listesi var - fonksiyonun bir matematikçi tarafından nasıl yazılacağına çok yakın. if ile

, diğer yandan, düzensiz aralıklarla atılmış anahtar kelimeler ile iç içe ifadelerin biraz karmaşık bir (aslında O (n) okuma güçlüğü) bir yapıya sahiptir.

Basit durumlar için, temel olarak if arasındaki bir toss-up'tır ve korumalar - if bazı çok basit durumlarda daha okunabilir bile olabilir çünkü tek bir satıra yazmanın daha kolaydır. Daha karmaşık mantık için, gardiyanlar aynı fikri ifade etmenin daha iyi bir yoludur.

+0

+1, sağdan ayrı olarak, "O (n²) okuma zorluğu" – delnan

+0

@delnan - Belki de "O (n²) sinyal gürültüsünü" * ile "n" koşullarının sayısı olduğunu düşünüyorlardı. – ChaosPandion

6

Her zaman bir tercih meselesi olduğunu düşündüm. Şahsen, ikincisini tercih ederim, sanırım eğer elysanlar muhafızlardan daha zorlayıcı bir his veriyorlar ve muhafızları okumayı daha kolay buluyorum.

+2

Muhafızların okuma şeklini gerçekten çok seviyorum. – ChaosPandion

İlgili konular