Bir çok yazılımcıdan garip garip cevaplarını aldığım bu klasik soru aslında ülkemizde çok daha vahim bir gerçeği açığa çıkarıyor.
Ben 2008 yılından bu yana php ve javascript dilleriyle daha çok yazılım geliştiriyor olsam da neredeyse tüm dillerde if ve switch deyimleri vardır sanıyorum.
Yaklaşık 7 yıldır Türkiye’nin dört bir yanına uzaktan özel dersler verdiğimden genelde giriş seviyesi yazılımcılar ile bol bol sohbetler ediyorum ve tüm bu arkadaşların switch deyimine uzak kaldıklarını görüyorum. Bu arkadaşların verdiği cevaplar ise standart.
Hocam if’de aynı şeyi yapıyor, ne gerek var switch’e ben if’i daha çok seviyorum.
Switch’in yazımı daha zor if daha kolay.
Yazılıma yeni yeni ısınmaya başlamış bir kişinin bu cevabı vermesi bana gayet normal gelse de İstanbul’da herkesin bildiği iyi bir üniversitede yazılım öğretmenliği yapan bir öğretmenin de bana aynı cevabı vermesi bende şok etkisi yapmıştı! Kendisine öğrencilerinin önünde bir cevap vermeyi kendime yakıştıramadığımdan sessizce baka kalmıştım..
Sadede gelelim;
Kodların okunaklılığı bakımından bu iki deyimin farklılık sunması dışında aslında işleyişleri de farklıdır.
Switch deyimini kullanmanızın en büyük sebebi daha performanslı kodlar yazmak olabilir!
Ben açıkçası ardışık basit koşulları karşılaştırırken bile switch deyimini görselliğini sevdiğimden daha çok kullanıyor olsam bile aslında;
Karmaşık koşulları karşılaştırırken veya basit bir koşulu bile döngü içerisinde defalarca karşılaştırıldığı durumlarda switch açık ara daha performanslı çalışacaktır.
//SWITCH KULLANIMI
switch(koşul){
case 'deger1': çalışacak kodlar; break;
case 'deger2': çalışacak kodlar; break;
case 'deger3': çalışacak kodlar; break;
default : çalışacak kodlar;
}
//IF KULLANIMI
if (koşul == 'deger1'){ çalışacak kodlar; }
elseif(koşul == 'deger2'){ çalışacak kodlar; }
elseif(koşul == 'deger3'){ çalışacak kodlar; }
else { çalışacak kodlar; }
Çünkü switch deyiminde koşul sadece bir defa sorgulanır ve sonrasında doğru case deyimine kadar değerlerle karşılaştırma yapılır. Oysa if deyiminden elseif deyimine geçildiği anda koşul bir kez daha sorgulanır ve sonrasında değer ile karşılaştırma yapılır.
Yani zaten if içerisinde yazdığınız koşulun aynısı elseif içerisinde de olacak ise bu switch’e kıyasla performans kaybı yaratacak ve okunması daha güç bir kod sayfasına neden olacaktır. Ki yukarıda if yazımının düzgün görünmesi için çok çabaladığımı fark etmişsinizdir 🙂
İçeriği daha dolu yazılarda görüşmek dileğiyle.
Not: Boolean değerler ile switch kullanımını test etmenizde fayda görüyorum. Zira if ile aynı sonuçları elde edemeyebilirsiniz.