İç İçe Koşulları Düzleştirme
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 22 / 66.
İç içe koşullar kodunuzu okuması ve bakımı zor hale getirebilir. Düzleştirme, girinti seviyelerini azaltarak okunabilirliği iyileştirmeye yardımcı olur.
İşte derin iç içe geçmiş koşullu ifadelerin bir örneği:
if (userLoggedIn)
{
if (userHasPermission)
{
if (fileExists)
{
// Process the file
ProcessFile();
}
else
{
Console.WriteLine("File not found");
}
}
else
{
Console.WriteLine("No permission");
}
}
else
{
Console.WriteLine("Not logged in");
}
Bunu erken dönüşler veya koruma koşulları kullanarak düzleştirebiliriz:
if (!userLoggedIn)
{
Console.WriteLine("Not logged in");
return;
}
if (!userHasPermission)
{
Console.WriteLine("No permission");
return;
}
if (!fileExists)
{
Console.WriteLine("File not found");
return;
}
// Process the file
ProcessFile();
Düzleştirilmiş kodun daha az girintiye sahip olduğunu ve takip etmenin daha kolay olduğunu fark edin.
Görev
KolayBurs uygunluğunu kontrol ederken, derin biçimde iç içe geçmiş koşullu ifadeler kodun okunmasını ve bakımını zorlaştırır. Bu görevde, karmaşık iç içe koşullu yapıyı koruma koşullarını kullanarak temiz ve okunabilir bir koda dönüştüreceksin.
Koruma koşulu, belirli bir koşulu hemen ele alan erken bir return ifadesidir; böylece işlevin geri kalanı "beklenen akışa" odaklanabilir.
Görevin, CheckScholarshipEligibility metodundaki kısmen uygulanmış koruma koşullarını aşağıdaki kurallara göre tamamlamaktır:
- Yaş 17'den küçükse hemen "Yaş şartı nedeniyle uygun değil" döndür
- GPA ≥ 3.5 VE öğrencinin bir tavsiye mektubu varsa tam burs ver
- GPA ≥ 3.8 ise (tavsiye mektubu olmasa bile) tam burs ver
- GPA ≥ 3.0 VE öğrencinin bir tavsiye mektubu varsa kısmi burs ver
- GPA 3.5 ile 3.8 arasındaysa kısmi burs ver
- Diğer tüm durumlarda "Burs için uygun değil" döndür
Kendin dene
using System;
class Program
{
public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
{
// Yaş gereksinimi için koruyucu koşul
if (age < 17)
{
Console.WriteLine("Not eligible due to age requirement.");
return;
}
// Tavsiye ile tam burs için koruyucu koşul
if (/* Bu koşulu tamamlayın */)
{
Console.WriteLine("Full scholarship granted!");
return;
}
// Olağanüstü GPA ile tam burs için koruyucu koşul
if (/* Bu koşulu tamamlayın */)
{
Console.WriteLine("Full scholarship granted!");
return;
}
// Tavsiye ile kısmi burs için koruyucu koşul
if (/* Bu koşulu tamamlayın */)
{
Console.WriteLine("Partial scholarship granted.");
return;
}
// İyi GPA ile kısmi burs için koruyucu koşul
if (/* Bu koşulu tamamlayın */)
{
Console.WriteLine("Partial scholarship granted.");
return;
}
// Varsayılan durum: burs için uygun değil
Console.WriteLine("Not eligible for scholarship.");
}
static void Main(string[] args)
{
// Anında geri bildirim için test vakaları
Console.WriteLine("Test Case 1: Age 16, GPA 4.0, Has Recommendation: True");
CheckScholarshipEligibility(16, 4.0, true);
Console.WriteLine("\nTest Case 2: Age 18, GPA 3.9, Has Recommendation: False");
CheckScholarshipEligibility(18, 3.9, false);
Console.WriteLine("\nTest Case 3: Age 17, GPA 3.6, Has Recommendation: True");
CheckScholarshipEligibility(17, 3.6, true);
Console.WriteLine("\nTest Case 4: Age 19, GPA 3.2, Has Recommendation: True");
CheckScholarshipEligibility(19, 3.2, true);
Console.WriteLine("\nTest Case 5: Age 18, GPA 2.8, Has Recommendation: False");
CheckScholarshipEligibility(18, 2.8, false);
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null GüvenliğiKendi başına pratik yap: Online C# derleyicisi