Basit karar mekanizmaları için oldukça kullanışlıdır; ancak yanlış veya bilinçsiz kullanıldığında
kodun okunabilirliğini düşürür, hata ihtimalini artırır ve bakım maliyetini yükseltir.
Bu yazıda if–else yazarken yapılan yaygın hataları ve
switch–case kullanımının ne zaman daha mantıklı olduğunu örneklerle inceleyeceğiz.
1. Gereksiz Uzayan if–else Zincirleri

if-else’De En Sık Yapılan Hata
Tek bir değişkenin aldığı farklı değerlere göre işlem yapılacaksa,
birçok geliştirici refleks olarak uzun if-else zincirleri yazar.
Bu yaklaşım kısa vadede çalışıyor gibi görünse de uzun vadede ciddi sorunlara yol açar.
if (status == 1) {
printf("Başarılı");
} else if (status == 2) {
printf("Beklemede");
} else if (status == 3) {
printf("Hata");
} else if (status == 4) {
printf("İptal");
}
Bu yapı büyüdükçe kod karmaşıklaşır ve yeni bir durum eklemek zorlaşır.
Ayrıca yanlış bir koşul sırası, fark edilmesi zor bug’lara neden olabilir.
2. switch–case Ne Zaman Daha Mantıklıdır?

Okunabilirlik ve Düzen
Eğer kontrol edilen değer tek bir değişken ve
koşullar sabit değerler ise,
switch–case genellikle daha temiz ve okunabilir bir çözümdür.
switch (status) {
case 1:
printf("Başarılı");
break;
case 2:
printf("Beklemede");
break;
case 3:
printf("Hata");
break;
case 4:
printf("İptal");
break;
default:
printf("Bilinmeyen durum");
}
Neden switch Daha İyi?
- Koşullar tek bir blokta toplanır
- Kodun akışı daha nettir
- Bakım ve genişletme daha kolaydır
3. if-else Yazarken Mantık Hataları
Yanlış Koşul Sıralaması
if–else yapılarında koşulların sırası hayati öneme sahiptir.
Yanlış sıralama, bazı blokların asla çalışmamasına neden olabilir.
score = 85
if score > 50:
print("Geçti")
elif score > 90:
print("Pekiyi")
Bu örnekte elif bloğu hiçbir zaman çalışmaz.
Çünkü 90 zaten 50’den büyüktür.
Bu tarz hatalar genellikle test aşamasında fark edilir ve zaman kaybettirir.
4. switch Kullanılmaması Gereken Durumlar
Aralık ve Karmaşık Koşullar
switch–case yalnızca eşitlik kontrolü yapar.
Değer aralıkları veya birden fazla değişkene bağlı mantıklar söz konusuysa
if-else çok daha uygundur.
if (age < 18) {
console.log("Çocuk");
} else if (age < 65) {
console.log("Yetişkin");
} else {
console.log("Emekli");
}
5. Doğru Yapıyı Seçmek Neden Önemli?

Yanlış kontrol yapısı seçimi sadece kod estetiğini değil,
projenin sürdürülebilirliğini de etkiler.
Okunabilir bir kod, yeni gelen geliştiricilerin projeye daha hızlı adapte olmasını sağlar.
| Senaryo | Önerilen Yapı |
|---|---|
| Tek değişken + sabit değer | switch–case |
| Aralık kontrolü | if–else |
| Karmaşık mantık | if–else |
| Okunabilirlik önceliği | switch–case |
Sen projelerinde hâlâ her yerde if–else mi kullanıyorsun?
Yoksa switch–case ile kodunu sadeleştirmeyi düşünüyor musun?
SSS (FAQ)
switch performans olarak daha mı hızlıdır?
Bazı durumlarda evet, özellikle derleyici jump table kullanıyorsa.
if–else tamamen kötü mü?
Hayır. Karmaşık ve aralık bazlı kontroller için en doğru seçimdir.
Okunabilirlik mi performans mı öncelik?
Çoğu projede okunabilirlik daha kritiktir.
Kaynakça
MDN Web Docs – Conditional Statements
Clean Code – Robert C. Martin






