Soru Tarihi
If...Else operatörü, Visual Basic'in en eski sürümünden itibaren tüm sürümlerde bulunan temel bir kontrol aracıdır. Gelişimi, basit doğrusal dallanmalardan, ElseIf, End If ve her türlü karmaşık mantıksal ifadeyi destekleyen genişletilmiş bir sözdizimine doğru ilerlemiştir.
Sorun
Birçok kişi, koşulların yanlış formatlanması veya iç içe geçmesi nedeniyle hatalar yapar, ElseIf'i yanlış kullanarak okunabilirliği zorlaştırır ve yakalaması zor mantık hatalarıyla karşılaşır. Yeni başlayanlar sıklıkla When ve ElseIf'i karıştırır ve mantığı kopyalayarak hata yaparlar.
Çözüm
Okunabilirliği sağlamak için If...ElseIf...Else...End If kullanın. Her zaman ilgili koşulları gruplayın, tekrarlayan kontrollerden ve gereksiz yapılardan kaçının. Karmaşık koşullar için mantıksal operatörler (AndAlso, OrElse) kullanmak daha iyidir.
Kod örneği:
Dim age As Integer = 22 If age < 18 Then Console.WriteLine("Reşit değil") ElseIf age < 65 Then Console.WriteLine("Yetişkin") Else Console.WriteLine("Yaşlı") End If
Anahtar özellikler:
ElseIf bloklarının açık bir şekilde yerleştirilmesi okunabilirliği artırır.Birden fazla satırlı If yapılarında End If kullanılmazsa ne olur?
Derleme hatası. Tüm çok satırlı yapılar End If gerektirir. Tek satırlık If ile birlikte gelişmeler yaşanmıştır, örneğin:
If x > 0 Then y = 1 Else y = -1
ElseIf'in kendi Else'i olabilir mi?
Hayır. Koşul zincirinde yalnızca bir Else kullanılabilir ve bu tüm If bloğuna aittir. Örneğin:
If x = 1 Then ... ElseIf x = 2 Then ... Else ... End If
Or operatörü ile OrElse arasındaki fark nedir?
Or her zaman her iki koşulu da hesaplar, OrElse ise yalnızca ihtiyaç olduğunda (ilk yanlış olduğunda) hesaplar. Kısa devre (short-circuit) için OrElse kullanın.
Her bir koşulun Else ile sağlanmadığı çok katmanlı If yapısı ve yeterli dokümantasyon eksikliği, yeni dallar eklenirken hatalara yol açar.
Artılar:
Eksiler:
Açıkça açıklanan ElseIf kullanımı, ilgili koşulların birleştirilmesi ve tüm dalların tamamlanması sağlanır.
Artılar:
Eksiler: