Guard Clauses
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 19 von 66.
Guard Clauses sind bedingte Anweisungen am Anfang einer Methode, die auf Grenzfälle oder ungültige Eingaben prüfen und die Methode frühzeitig verlassen, wenn diese Bedingungen erfüllt sind.
Erstellen wir eine Methode ohne Guard-Clause:
public void ProcessOrder(Order order)
{
if (order != null)
{
// Verarbeite die Bestellung
// Viele Codezeilen hier...
}
}Schreiben wir es nun mit einer Guard-Clause um:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Guard-Clause - frühzeitiger Abbruch, wenn order null ist
}
// Bestellung verarbeiten
// Viele Zeilen Code hier...
}Guard Clauses verbessern die Lesbarkeit, indem sie Verschachtelungen reduzieren und Ausnahmefälle am Anfang einer Methode behandeln.
Aufgabe
EinfachErstellen Sie eine Methode namens DivideNumbers, die zwei Ganzzahlen, numerator und denominator, entgegennimmt.
- Fügen Sie eine Guard-Clause hinzu, um zu prüfen, ob der Nenner Null ist.
- Wenn der Nenner Null ist, geben Sie "Cannot divide by zero" aus und geben Sie 0 zurück.
- Andernfalls teilen Sie den Zähler durch den Nenner und geben Sie das Ergebnis zurück.
Spickzettel
Guard Clauses sind bedingte Anweisungen am Anfang einer Methode, die auf Randfälle oder ungültige Eingaben prüfen und frühzeitig zurückkehren, wenn diese Bedingungen erfüllt sind.
Ohne Guard Clause:
public void ProcessOrder(Order order)
{
if (order != null)
{
// Die Bestellung verarbeiten
// Viele Codezeilen hier...
}
}Mit Guard Clause:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Guard Clause - frühzeitig beenden, wenn order null ist
}
// Die Bestellung verarbeiten
// Viele Codezeilen hier...
}Guard Clauses verbessern die Lesbarkeit, indem sie Verschachtelungen reduzieren und Ausnahmefälle am Anfang einer Methode behandeln.
Probier es selbst
using System;
public class Program
{
public static int DivideNumbers(int numerator, int denominator)
{
// Schreiben Sie hier Ihren Code
}
public static void Main()
{
// Eingaben von der Konsole lesen
int numerator = Convert.ToInt32(Console.ReadLine());
int denominator = Convert.ToInt32(Console.ReadLine());
// Die Methode DivideNumbers aufrufen
int result = DivideNumbers(numerator, denominator);
// Das Ergebnis ausgeben
Console.WriteLine(result);
}
}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