if–else Kullanırken Yaptığımız Hatalar (switch Ne Zaman Mantıklı?)

if-else
if-else yazılım geliştirme sürecinde yapıları neredeyse her projede karşımıza çıkar.
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 zincirleri
if-else karmaşası

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?

if-else vs switch-case
if-else vs switch-case

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?

if-else mi switch-case mi ?
if-else mi switch-case mi ?

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ğerswitch–case
Aralık kontrolüif–else
Karmaşık mantıkif–else
Okunabilirlik önceliğiswitch–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

 

İlgili Yazılar