Defensive Programming
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 34 von 66.
Defensive Programmierung ist eine Technik, die hilft, Fehler zu verhindern, die durch Null-Referenzen verursacht werden. Sie umfasst das Überprüfen auf Null-Werte, bevor versucht wird, Objekte zu verwenden.
Prüfen Sie auf null, bevor Sie ein Objekt verwenden:
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());Parameter in Methoden validieren:
public void ProcessOrder(Order order)
{
// Defensiver Check für null-Parameter
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// Jetzt sicher, die Bestellung zu verarbeiten
Console.WriteLine("Processing order: " + order.Id);
}Verwenden Sie den bedingten Zugriffsoperator (?.) für sauberere Null-Überprüfungen:
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;Aufgabe
EinfachErstellen Sie eine Methode namens ProcessUserData, die einen String-Parameter userData akzeptiert. Die Methode sollte:
userDataauf null überprüfen – falls es null ist, "Error: User data is null" ausgeben und returnieren.userDataauf leer überprüfen – falls es leer ist, "Error: User data is empty" ausgeben und returnieren.- Falls die Daten gültig sind, sie in Großbuchstaben umwandeln und "Processing: [UPPERCASE_DATA]" ausgeben.
Spickzettel
Defensives Programmieren verhindert Fehler, indem es vor der Verwendung von Objekten auf Null-Werte prüft.
Prüfen Sie auf null, bevor Sie ein Objekt verwenden:
string name = GetNameFromSomewhere();
if (name == null)
{
name = "Default Name";
}
Console.WriteLine(name.ToUpper());Validieren Sie Parameter in Methoden:
public void ProcessOrder(Order order)
{
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
Console.WriteLine("Processing order: " + order.Id);
}Verwenden Sie den bedingten Zugriffsoperator (?.) für sauberere Null-Prüfungen:
Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;Probier es selbst
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// Hinweis: der String "null" sollte als tatsächlicher Null-Wert behandelt werden
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
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