Defensive Programming
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 34 / 66.
Defansif programlama, null referanslardan kaynaklanan hataları önlemeye yardımcı olan bir tekniktir. Nesneleri kullanmaya çalışmadan önce null değerlerini kontrol etmeyi içerir.
Bir nesneyi kullanmadan önce null olup olmadığını kontrol edin:
string name = GetNameFromSomewhere();
// Defensive check
if (name == null)
{
// Handle the null case
name = "Default Name";
}
// Now it's safe to use name
Console.WriteLine(name.ToUpper());Metodlarda parametreleri doğrulayın:
public void ProcessOrder(Order order)
{
// Null parametre için savunma 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 kontrolleri için koşullu erişim operatörü (?.) kullanın:
Customer customer = GetCustomerFromSomewhere();
// Instead of:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Use this:
string city = customer?.Address?.City;Görev
KolayProcessUserData adında bir metot oluşturun ki, bu metot userData adında bir string parametresi alsın. Metot şunları yapmalı:
userData'nın null olup olmadığını kontrol edin - eğer öyleyse, "Error: User data is null" yazdırın ve geri dönün.userData'nın boş olup olmadığını kontrol edin - eğer öyleyse, "Error: User data is empty" yazdırın ve geri dönün.- Eğer veri geçerliyse, onu büyük harfe dönüştürün ve "Processing: [UPPERCASE_DATA]" yazdırın.
Kopya kağıdı
Defansif programlama, nesneleri kullanmadan önce null değerleri kontrol ederek hataları önler.
Bir nesneyi kullanmadan önce null kontrolü yapın:
string name = GetNameFromSomewhere();
if (name == null)
{
name = "Default Name";
}
Console.WriteLine(name.ToUpper());Yöntemlerde parametreleri doğrulayın:
public void ProcessOrder(Order order)
{
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
Console.WriteLine("Processing order: " + order.Id);
}Daha temiz null kontrolleri için koşullu erişim operatörünü (?.) kullanın:
Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;Kendin dene
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// İpucu: "null" dizesi gerçek bir null değeri olarak işlenmelidir
// Kodu 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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety