Early Returns
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 18 von 66.
Frühe Rückgaben sind eine Technik, bei der wir eine Methode verlassen, sobald wir die Antwort haben oder auf eine ungültige Bedingung stoßen, anstatt Bedingungen zu verschachteln.
Lassen Sie uns zwei Ansätze zum Validieren eines Benutzernamens vergleichen:
Ohne frühe Returns (verschachtelte Bedingungen):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Mit frühen Rückgaben:
public bool ValidateUsername(string username)
{
// Return early if username is null
if (username == null)
return false;
// Return early if username is too short
if (username.Length < 3)
return false;
// Return early if username is too long
if (username.Length > 20)
return false;
// If we get here, username is valid
return true;
}Frühe Returns machen den Code lesbarer und reduzieren die Einrückungsebenen.
Aufgabe
EinfachSchreiben Sie eine Methode namens ProcessPayment, die bestimmt, ob eine Zahlung basierend auf Folgendem verarbeitet werden kann:
- Der Zahlungsbetrag muss positiv sein
- Der Kontostand muss ausreichend sein
- Das Konto darf nicht gesperrt sein
Verwenden Sie frühe Rückgaben, um jede Bedingung zu prüfen und geeignete Fehlermeldungen zurückzugeben.
Die Methode sollte:
- Drei Parameter aufnehmen:
decimal paymentAmount,decimal accountBalanceundbool isAccountLocked - Einen String zurückgeben mit entweder "Payment processed successfully" oder einer Fehlermeldung
- Frühe Rückgaben für die Validierung verwenden
Fehlermeldungen genau in diesen Formaten ausgeben:
- "Error: Payment amount must be positive"
- "Error: Insufficient funds"
- "Error: Account is locked"
Spickzettel
Frühe Rückgaben verlassen eine Methode sofort, wenn eine Bedingung erfüllt ist, vermeiden verschachtelte Bedingungen und reduzieren die Einrückung.
Ohne frühe Rückgaben (verschachtelte Bedingungen):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Mit frühen Rückgaben:
public bool ValidateUsername(string username)
{
// Früh zurückgeben, wenn username null ist
if (username == null)
return false;
// Früh zurückgeben, wenn username zu kurz ist
if (username.Length < 3)
return false;
// Früh zurückgeben, wenn username zu lang ist
if (username.Length > 20)
return false;
// Wenn wir hier ankommen, ist username gültig
return true;
}Frühe Rückgaben machen den Code lesbarer und reduzieren die Einrückungsebenen.
Probier es selbst
using System;
public class Program
{
public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
{
// Schreibe deinen Code hier
}
public static void Main(string[] args)
{
decimal paymentAmount = decimal.Parse(Console.ReadLine());
decimal accountBalance = decimal.Parse(Console.ReadLine());
bool isAccountLocked = bool.Parse(Console.ReadLine());
string result = ProcessPayment(paymentAmount, accountBalance, isAccountLocked);
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