DEFENSIVE CODING FOR C# EĞİTİMİ

C# kodunuzu hatalara karşı zırhlayın

Guard clause, nullable güvenliği, girdi doğrulama, hata ve kaynak yönetimi, eşzamanlılık ve domain koruması

C# için Defensive Coding, hataları üretime çıkmadan önce yakalayan kodlama alışkanlıklarını öğretir. 3 gün boyunca laboratuvar uygulamalarıyla işlenir; katılımcılara Digital Vizyon Akademi Katılım ve Başarı Sertifikası verilir.

3 gün Orta Seviye Online / Yüz Yüze / Hibrit Sertifikalı

Eğitim Hakkında

C# ile savunmacı kodlama: null güvenliği, doğrulama, hata stratejileri, loglama ve test

C# için Defensive Coding, hataları üretime çıkmadan önce yakalayan kodlama alışkanlıklarını öğretir. Ön koşul ve guard clause, null güvenliği, girdi doğrulama, Result ve istisna stratejileri, kaynak ve bellek yönetimi, değişmez nesneler, thread güvenliği, loglama ve value object ile domain koruması üç günde örnek hatalı kodların düzeltilmesiyle işlenir.

Süre ve Format

3 Gün. Her gün dört modül; her modülde hatalı kodu bulma, düzeltme ve test yazma döngüsü işlenir.

Seviye

Orta Seviye — 12 uygulamalı modülde Koruma blokları ve sözleşmeyle tasarım, Kaynak ve ömür yönetimi ve Birim test pratikleri gibi konuları kapsar.

Öğrenme Metodu

Hatalı örnek kod önce çalıştırılıp bozulduğu nokta gösterilir, ardından savunmacı teknikler uygulanarak düzeltilir; testler ve analyzer'larla kazanım ölçülür.

Neden Bu Eğitim?

🛡️Hatayı baştan önleme

Null, sınır değeri ve eşzamanlılık kaynaklı hataların üretime çıkmadan nasıl yakalanacağını kod üzerinde görürsünüz.

🔎Teşhis edilebilir sistemler

Yapılandırılmış loglama, correlation ID ve doğru istisna tasarımıyla sorunu dakikalar içinde bulmayı öğrenirsiniz.

✅Ölçülebilir kalite

Roslyn analyzer, nullable uyarıları ve mutasyon testiyle kod kalitenizi sayısal olarak izlersiniz.

Anahtar Konular

c# için defensive coding eğitimidefensive coding c#savunmacı kodlamac# hata yönetiminullable reference typesclean code c#c# exception handlingc# unit testserilogfluentvalidation
“Hata kaçınılmazdır; savunmacı kod, hatanın sessizce büyümesini engelleyen koddur.”

Ön Koşullar

Eğitimden verim almak için faydalı olacak bilgi ve ortam gereksinimleri

1
C# deneyimi

Sınıf, arayüz, LINQ ve istisna yönetimi konularında temel-orta düzey C#.

2
Birim test farkındalığı

xUnit veya NUnit ile basit test yazma deneyimi faydalıdır.

3
Kurulu ortam

Visual Studio 2022 ve güncel .NET SDK kurulu bilgisayar.

4
Gerçek proje kodu

Kendi projenizden örnek kod getirmek tartışmayı zenginleştirir (zorunlu değil).

Eğitim İçeriği

Programın gün gün akışı aşağıdadır. Bir güne tıklayarak o günün modüllerini ve içeriklerini görebilirsiniz.

Günün hedefiKatılımcı gün sonunda Koruma blokları ve sözleşmeyle tasarım, Null güvenliği, Girdi doğrulama ve Hata stratejileri başlıklarını çalışan örnek kod üzerinde uygulayarak "Sözleşme, null, doğrulama ve hata stratejisi" konusunda bağımsız çalışabilir hale gelir.
Modül 1
Koruma blokları ve sözleşmeyle tasarım
  • Guard clause deseni ve erken çıkış ile iç içe if'lerin azaltılması
  • ArgumentNullException.ThrowIfNull ve ArgumentOutOfRangeException.ThrowIfNegative kullanımı
  • Ön koşul, son koşul ve değişmezlik (invariant) kavramları
  • Debug.Assert ile geliştirme zamanı doğrulama ve Release farkı
  • Metot sözleşmesini dokümante eden XML yorumları ve nitelikler
  • Public API sınırında doğrulama, iç kodda güven ilkesi
Modül 2
Null güvenliği
  • Nullable reference types ile NullReferenceException'ın derleme zamanında yakalanması
  • ?, !, ?., ??= operatörleri ve null-forgiving kullanımının riskleri
  • [NotNull], [MaybeNull], [NotNullWhen] gibi nullability öznitelikleri
  • Null Object deseni ve boş koleksiyon döndürme ilkesi
  • Nullable uyarılarını hata sayma (WarningsAsErrors) ve kademeli geçiş
  • Option/Maybe benzeri sarmalayıcılar ve TryGet kalıbı
Modül 3
Girdi doğrulama
  • TryParse kalıbı ve kültüre duyarlı sayı/tarih ayrıştırma
  • DataAnnotations ve FluentValidation ile kural tabanlı doğrulama
  • Beyaz liste yaklaşımı, uzunluk ve aralık kontrolleri
  • Regex timeout ve ReDoS riskinin azaltılması
  • checked bağlamı ile tamsayı taşmasını yakalama
  • SQL enjeksiyonu ve path traversal gibi girdi kaynaklı zafiyetlerden korunma
Modül 4
Hata stratejileri
  • İstisna mı Result<T> mı: beklenen ve beklenmeyen hataların ayrımı
  • Fail-fast ilkesi ve hatayı gizlemenin maliyeti
  • Özel istisna hiyerarşisi tasarımı ve anlamlı mesajlar
  • Polly ile retry, timeout ve circuit breaker politikaları
  • İstisna filtreleri, catch-when ve yeniden fırlatma kuralları
  • Üst katmanda merkezi hata yakalama ve kullanıcıya güvenli mesaj
Günün hedefiKatılımcı gün sonunda Kaynak ve ömür yönetimi, Değişmezlik ve eşzamanlılık güvenliği, Loglama ve izlenebilirlik ve Bellek yönetimi ve çöp toplama başlıklarını çalışan örnek kod üzerinde uygulayarak "Kaynak, eşzamanlılık, loglama ve bellek" konusunda bağımsız çalışabilir hale gelir.
Modül 1
Kaynak ve ömür yönetimi
  • using, await using ve IDisposable/IAsyncDisposable deseni
  • SafeHandle ve yönetilmeyen kaynakların güvenli sarılması
  • Bağlantı havuzu, HttpClient ömrü ve soket tükenmesi
  • Zaman aşımı ve CancellationToken ile asılı kalan işlemleri sonlandırma
  • Bellek sızıntısı kaynakları: olay aboneliği, statik referans
  • Zarif kapanış (graceful shutdown) ve IHostApplicationLifetime
Modül 2
Değişmezlik ve eşzamanlılık güvenliği
  • readonly, init ve record ile değişmez nesneler
  • ImmutableList/ImmutableDictionary ve savunmacı kopya (defensive copy)
  • lock, Monitor ve Interlocked ile kritik bölge koruması
  • ConcurrentDictionary ve thread-safe koleksiyonlar
  • Race condition ve deadlock örneklerinin yeniden üretilmesi
  • Paylaşılan durumu en aza indirme: stateless servis tasarımı
Modül 3
Loglama ve izlenebilirlik
  • ILogger<T> ve log seviyeleri (Trace–Critical)
  • Serilog ile yapılandırılmış (structured) loglama ve sink'ler
  • Correlation ID ile istekleri uçtan uca izleme
  • Hassas verinin loglara sızmasını önleme (maskeleme)
  • Exception.Data ve bağlam bilgisinin hata raporuna eklenmesi
  • Üretimde log analizi: Seq/ELK ile arama ve uyarı kuralları
Modül 4
Bellek yönetimi ve çöp toplama
  • Stack ve heap ayrımı, değer/referans türlerinin yerleşimi
  • GC nesilleri (Gen0/1/2), LOH ve toplama tetikleyicileri
  • IDisposable deseni, finalizer ve GC.SuppressFinalize
  • Boxing/unboxing maliyeti ve struct tasarım kuralları
  • Span<T>, Memory<T> ve ArrayPool<T> ile ayırma maliyetini azaltma
  • BenchmarkDotNet ile mikro-benchmark ve [MemoryDiagnoser] okuma
Günün hedefiKatılımcı gün sonunda Savunmacı test teknikleri, Statik analiz ve kod kalitesi, Savunmacı alan modeli ve DDD ve Birim test pratikleri başlıklarını çalışan örnek kod üzerinde uygulayarak "Test, analiz, domain koruması ve birim test" konusunda bağımsız çalışabilir hale gelir.
Modül 1
Savunmacı test teknikleri
  • Sınır değer ve eşdeğerlik sınıfı analizi
  • Negatif testler: geçersiz girdi, null, boş koleksiyon, aşırı büyük değer
  • FsCheck ile özellik tabanlı (property-based) test
  • Stryker.NET ile mutasyon testi ve test kalitesinin ölçümü
  • Test çiftleri (fake, stub, mock) ile hata enjeksiyonu
  • Hata durumlarını yeniden üreten regresyon testleri
Modül 2
Statik analiz ve kod kalitesi
  • Roslyn analyzer'ları ve CA kuralları (CA1062, CA2000 vb.)
  • .editorconfig ile ekip genelinde kural şiddeti belirleme
  • SonarLint/SonarQube ile kod kokusu ve zafiyet taraması
  • StyleCop ile biçim tutarlılığı
  • CI hattında uyarıları hata sayarak derlemeyi durdurma
  • Kod inceleme (code review) kontrol listesi: savunmacı kodlama maddeleri
Modül 3
Savunmacı alan modeli ve DDD
  • Entity, Value Object ve Aggregate kavramları
  • Value object'lerde doğrulamayı yapıcıya gömme (Money, Email)
  • Aggregate root üzerinden değişmezlikleri koruma
  • Repository ve Unit of Work soyutlamaları
  • Domain event'ler ve yan etkilerin ayrıştırılması
  • Ortak dil (ubiquitous language) ve bounded context sınırları
Modül 4
Birim test pratikleri
  • xUnit ile [Fact], [Theory] ve [InlineData] kullanımı
  • Arrange-Act-Assert düzeni ve test adlandırma standartları
  • Moq ile bağımlılık taklidi: Setup, Returns, Verify
  • FluentAssertions ile okunabilir doğrulamalar
  • Test edilebilir tasarım: constructor injection ve arayüz çıkarma
  • Kod kapsama (coverlet) raporu ve anlamlı kapsama hedefi belirleme

Eğitim Kazanımları

Program sonunda katılımcılar:

📐
Sözleşme tasarımı

Guard clause ve ön koşullarla metot sınırlarını net tanımlayabilirsiniz.

🚫
Null güvenliği

Nullable reference types ile NullReferenceException'ı derleme aşamasında yakalayabilirsiniz.

🧾
Girdi doğrulama

TryParse, FluentValidation ve whitelist yaklaşımıyla güvenli girdi işleyebilirsiniz.

⚠️
Hata stratejisi

İstisna ile Result kalıbı arasında bilinçli seçim yapabilirsiniz.

📜
Loglama

ILogger ve Serilog ile üretimde işe yarayan loglar üretebilirsiniz.

🔒
Eşzamanlılık

Değişmezlik ve kilitleme tekniklerini kullanarak thread güvenli kod yazabilirsiniz.

🧪
Savunmacı test

Sınır değer, negatif ve özellik tabanlı testler tasarlayabilirsiniz.

🔧
Statik analiz

Analyzer ve .editorconfig ile ekip standardını otomatik zorlayabilirsiniz.

Kimler İçin Uygundur?

  • Üretim ortamında hata maliyetini azaltmak isteyen C# geliştiricileri
  • takım liderleri için uygundur

Sıkça Sorulan Sorular

Bu eğitim kimler için uygundur?
Üretim ortamında hata maliyetini azaltmak isteyen C# geliştiricileri ve takım liderleri için uygundur.
Savunmacı kodlama performansı düşürür mü?
Doğru uygulandığında etkisi ihmal edilebilir; hangi kontrolün sınırda, hangisinin iç kodda yapılacağı eğitimde tartışılır.
Hangi araçlar kullanılacak?
Visual Studio, Roslyn analyzer'lar, xUnit, Moq, FluentValidation ve Serilog kullanılır.
Mevcut projeme uygulayabilir miyim?
Evet; nullable'ı kademeli açma ve analyzer'ları ekleme yöntemleri mevcut kod tabanları için gösterilir.
Eğitim sonunda sertifika alacak mıyım?
Eğitimi tamamlayan katılımcılara Digital Vizyon Akademi Katılım ve Başarı Sertifikası verilir. Üçüncü taraf kurumların resmi sınavları (varsa) ayrı olup başvurusu ve ücreti ilgili kuruma aittir.

Sertifikalandırma

Bu eğitim Digital Vizyon Akademi Başarı Sertifikası ile tamamlanır.

Eğitim başında “Ön Test”, bitiminde “Son Test” uygulanarak gelişim ölçümlenir. Değerlendirme formunu dolduran katılımcılar sertifikalarını alır. Sertifikanızın geçerliliğini Sertifika Sorgulama sayfasından doğrulayabilirsiniz.

Örnek Sertifika d Digital Vizyon AKADEMİ KATILIM SERTİFİKASI Bu sertifika [Katılımcı Adı Soyadı] adlı katılımcının aşağıdaki eğitim programını başarıyla tamamladığını belgeler. Defensive Coding for C# Eğitimi Sertifika Kodu DV-2026XX00 Tarih 27.10.2026 Yetkili İmza DV AKADEMİ

Eğitim Bilgileri

Süre3 gün
SeviyeOrta Seviye
FormatOnline / Yüz Yüze / Hibrit
Sertifika✓ Var
Hemen Bilgi Al
İlgili Eğitimler

Bu Eğitimle Birlikte Tercih Edilenler

+90 (501) 369 40 14 WhatsApp [email protected] LinkedIn