Koşullu Yapılar: If-Else ve Switch-Case Kullanımında Best Practices

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Koşullu Yapılar: Stratejik Karar Verme



1. If-Else: Ne Zaman ve Nasıl?​


if-else yapısı en esnek kontrol yapısıdır. Ancak karmaşıklaştıkça okunabilirliği hızla düşebilir.

Karmaşık Mantıklar: Eğer bir aralık (örn: yas > 18 && yas < 65) veya farklı değişkenlerin kombinasyonunu kontrol ediyorsanız if-else tek seçenektir.

Fail Fast (Hızlı Hata): Metotların başında geçersiz durumları kontrol edip erken return yaparak else bloklarından kurtulun. Bu, "Indentation Hell" (girinti cehennemi) oluşmasını engeller.

Best Practice: Eğer 3'ten fazla else-if bloğunuz varsa, kodunuzu refactor etme (iyileştirme) zamanı gelmiş olabilir.

Java:
// KÖTÜ: İç içe geçmiş (Nested) if'ler
if (isLoggedIn) {
if (hasPermission) {
// işlem yap
}
}

// İYİ: Guard Clauses (Koruyucu Cümleler)
if (!isLoggedIn) return "Giriş yapmalısın";
if (!hasPermission) return "Yetkin yok";
// işlem yap (Daha temiz ve okunabilir)

2. Modern Switch: Yeni Standart (Java 14+)​


Eski usul switch-case bloklarındaki break unutma hataları ve "fall-through" problemleri modern Java ile tarih oldu. Artık Switch Expressions (->) kullanmalısınız.

Arrow Syntax (->): break yazmanıza gerek kalmaz, sadece eşleşen satır çalışır.

Değer Döndürme: Switch artık bir değişkene doğrudan atanabilir.

Exhaustiveness (Kapsayıcılık): Compiler, tüm durumların (özellikle Enum'larda) kapsandığından emin olur. Eğer birini unutursanız kod derlenmez.

Java:
// MODERN: Switch Expression
int gunSayisi = switch (ay) {
case "Nisan", "Haziran", "Eylül" -> 30;
case "Şubat" -> isLeapYear ? 29 : 28;
default -> 31;
};

3. Hangisini Seçmelisiniz? (Altın Kurallar)​


ÖzellikIf-ElseSwitch-Case / Expression
Koşul TürüBoolean ifadeler, aralıklar, çoklu değişkenler.Tek bir değişkenin sabit değerleri (int, String, Enum).PerformansSırayla kontrol eder (Küçük setlerde hızlı).Jump Table kullanır (Büyük setlerde daha hızlı).
Hata RiskiMantık hatası yapmaya açık.Modern yapıda (->) hata riski çok düşüktür.

Ne Zaman Switch Kullanmalısınız?​


Kontrol edilen değer ayrık (discrete) bir değerse (Örn: Haftanın günleri, hata kodları).

Aynı değişken üzerinden 3'ten fazla kontrol yapılıyorsa.

Enum tipleriyle çalışıyorsanız (Kesinlikle switch kullanın!).

4. Temiz Kod (Clean Code) İpucu: Dictionary/Map Yaklaşımı​


Eğer switch bloklarınız sadece bir anahtara karşılık bir değer döndürüyorsa, 2026 standartlarında bir Map kullanmak bazen en temiz çözümdür:

Java:
// Switch yerine Map kullanımı (Daha esnek ve dinamik)
Map<String, Integer> gunler = Map.of("Ocak", 31, "Nisan", 30);
int gun = gunler.getOrDefault("Mart", 31);



Sonuç

Mantık akışınızı kurgularken, Java 14 sonrası gelen yenilikleri kullanmak kodunuzu hem daha güvenli hale getirir hem de bakımını kolaylaştırır. if-else yapısını karmaşık mantıklar için, modern switch yapısını ise sabit değerli seçimler için saklayın.
 
Geri
Üst