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)
| Özellik | If-Else | Switch-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). | Performans | Sırayla kontrol eder (Küçük setlerde hızlı). | Jump Table kullanır (Büyük setlerde daha hızlı). |
| Hata Riski | Mantı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.