Savunmacı Programlama
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 34 / 66.
Defansif programlama, null referanslarının neden olduğu hataları önlemeye yardımcı olan bir tekniktir. Nesneleri kullanmaya çalışmadan önce null değerlerini kontrol etmeyi içerir.
Bir nesneyi kullanmadan önce null değerini kontrol edin:
string name = GetNameFromSomewhere();
// Defansif kontrol
if (name == null)
{
// Null durumunu ele al
name = "Default Name";
}
// Artık name'i güvenle kullanmak mümkün
Console.WriteLine(name.ToUpper());Yöntemlerde parametreleri doğrulayın:
public void ProcessOrder(Order order)
{
// Null parametre için savunmacı kontrol
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// Artık siparişi işlemek güvenli
Console.WriteLine("Processing order: " + order.Id);
}Daha temiz null denetimleri için koşullu erişim operatörünü (?.) kullanın:
Customer customer = GetCustomerFromSomewhere();
// Bunun yerine:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Bunu kullan:
string city = customer?.Address?.City;Görev
KolayProcessUserData adlı bir yöntem oluşturun; bu yöntem userData adlı bir dize parametresi kabul etmelidir. Yöntem şunları yapmalıdır:
userDatadeğerinin null olup olmadığını kontrol edin - null ise "Error: User data is null" yazdırın ve geri dönün.userDatadeğerinin boş olup olmadığını kontrol edin - boş ise "Error: User data is empty" yazdırın ve geri dönün.- Veriler geçerliyse, verileri büyük harfe dönüştürün ve "Processing: [UPPERCASE_DATA]" yazdırın.
Kendin dene
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// İpucu: "null" dizesi gerçek bir null değer olarak ele alınmalıdır
// Kodunuzu buraya yazın
}
}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