Koruma ve doğrulama kalıpları
Girdileri koruma tümceleriyle erkenden doğrulayın, doğru istisnaları fırlatın ve kullanıcı verileri için TryParse tarzı denetimler kullanın.
Koruma ve doğrulama kalıpları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.
Koruma koşulları neden kullanılır?
Amaç: Yöntemleri güvenli ve okunabilir tutmak.
- Başta koruma koşulları kullanın
- Belirli istisnalar fırlatın (ArgumentNullException, ArgumentOutOfRangeException)
- Kullanıcı girdisi için TryParse kullanın
- Hızlı başarısız olun; derin iç içe geçmelerden kaçının
Erken koruma gösterimi
Bağımsız değişkenleri doğrulamak için başa küçük denetimler ekleyin; çağıranların neyin yanlış gittiğini anlayabilmesi için belirli istisnalar fırlatın.
using System;
// Demo: validate inputs at the top; keep main logic flat.
public class Program
{
// Compute price with simple rules; guard early.
public static decimal ComputePrice(string sku, int qty, decimal unitPrice)
{
if (sku == null) throw new ArgumentNullException("sku");
if (sku.Length == 0) throw new ArgumentException("sku must not be empty", "sku");
if (qty <= 0) throw new ArgumentOutOfRangeException("qty", "qty must be > 0");
if (unitPrice < 0m) throw new ArgumentOutOfRangeException("unitPrice", "unitPrice must be >= 0");
// Main logic stays simple
decimal subtotal = qty * unitPrice;
if (qty >= 10) subtotal = subtotal * 0.9m; // small bulk discount
return subtotal;
}
public static void Main(string[] args)
{
Console.WriteLine(ComputePrice("ABC", 2, 5m)); // ok
try { Console.WriteLine(ComputePrice("", 2, 5m)); } catch (Exception ex) { Console.WriteLine(ex.GetType().Name); }
}
}
Guard yardımcı sınıfı
Yöntem gövdelerini temiz ve tutarlı tutmak için ortak denetimleri küçük bir Guard sınıfına ayırın.
using System;
// Minimal static helper for common validations (beginner friendly).
public static class Guard
{
public static void NotNull(object value, string name)
{
if (value == null) throw new ArgumentNullException(name);
}
public static void NotNullOrEmpty(string value, string name)
{
if (value == null) throw new ArgumentNullException(name);
if (value.Length == 0) throw new ArgumentException(name + " must not be empty", name);
}
public static void InRange(int value, int minInclusive, int maxInclusive, string name)
{
if (value < minInclusive || value > maxInclusive)
throw new ArgumentOutOfRangeException(name, "Expected " + minInclusive + ".." + maxInclusive);
}
}
public class Program
{
static int ScoreFor(string userId, int level)
{
Guard.NotNullOrEmpty(userId, "userId");
Guard.InRange(level, 1, 10, "level");
// pretend logic
return level * 100;
}
public static void Main(string[] args)
{
Console.WriteLine(ScoreFor("u42", 3));
try { Console.WriteLine(ScoreFor(null, 3)); } catch (Exception ex) { Console.WriteLine(ex.GetType().Name); }
}
}
TryParse doğrulaması
Rutin geçersiz girdiler için istisna fırlatmak yerine false döndüren TryParse tarzı yöntemleri tercih edin.
using System;
// Use TryParse for user-provided text; avoid throwing for normal invalid input.
public class Program
{
public static bool TryGetPort(string text, out int port)
{
port = 0;
int value;
if (!int.TryParse(text, out value)) return false;
if (value < 1 || value > 65535) return false;
port = value;
return true;
}
public static void Main(string[] args)
{
int p;
Console.WriteLine("8080 -> " + (TryGetPort("8080", out p) ? ("ok " + p) : "invalid"));
Console.WriteLine("abc -> " + (TryGetPort("abc", out p) ? ("ok " + p) : "invalid"));
}
}
Fırlatma ve döndürme
- Programcı hataları için istisna fırlatın (hatalı API kullanımı, izin verilmeyen null değer, aralık dışında değer)
- Normal kullanıcı hataları için false/sonuç döndürün (geçersiz metin)
- Belirli istisna türlerini kullanın; parametre adını ekleyin
- Dıştan içe doğrulayın: önce ucuz denetimleri yapın
En iyi uygulamalar
İpuçları:
- Sınır noktalarında doğrulama yapın (denetleyiciler, genel API'ler)
- Derin iç içe geçmeler yerine küçük koruma yöntemlerini tercih edin
- Hata iletilerini kısa ve anlaşılır tutun
- Her korumada değil, sınır noktasında bir kez günlük kaydı tutun
Koruma koşulunun anlamı
Özet
Özet: Koruma koşullarıyla erken doğrulama yapın, programcı hataları için belirli istisnalar fırlatın ve günlük kullanıcı girdileri için TryParse kullanın.
Sıkça Sorulan Sorular
“Koruma ve doğrulama kalıpları” dersi ücretsiz mi?
Evet — “Koruma ve doğrulama kalıpları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.
“Koruma ve doğrulama kalıpları” dersinde ne öğreneceğim?
Girdileri koruma tümceleriyle erkenden doğrulayın, doğru istisnaları fırlatın ve kullanıcı verileri için TryParse tarzı denetimler kullanın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.
“Koruma ve doğrulama kalıpları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Günlük kaydı soyutlamaları, Debug/Trace
- Temel profil oluşturma ve izler (kavramlar)
- Koruma ve doğrulama kalıpları