Early Returns
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 18 / 66.
Erken dönüşler, cevabı aldığımız anda veya geçersiz bir koşul karşılaştığımızda bir metoddan çıkma tekniğidir; koşulları iç içe sarmak yerine.
Kullanıcı adını doğrulamak için iki yaklaşımı karşılaştıralım:
Erken dönüşler olmadan (iç içe koşullu ifadeler):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Erken dönüşlerle:
public bool ValidateUsername(string username)
{
// username null ise erken dönüş
if (username == null)
return false;
// username çok kısaysa erken dönüş
if (username.Length < 3)
return false;
// username çok uzunsa erken dönüş
if (username.Length > 20)
return false;
// Buraya ulaşırsak username geçerli
return true;
}Erken dönüşler kodu daha okunabilir hale getirir ve girinti seviyelerini azaltır.
Görev
KolayProcessPayment adında bir metot yazın ki, bir ödemenin işlenip işlenemeyeceğini şu kriterlere göre belirlesin:
- Ödeme miktarı pozitif olmalıdır
- Hesap bakiyesi yeterli olmalıdır
- Hesap kilitli olmamalıdır
Her koşulu kontrol etmek ve uygun hata mesajlarını döndürmek için erken dönüşler kullanın.
Metot şunları yapmalıdır:
- Üç parametre alsın:
decimal paymentAmount,decimal accountBalancevebool isAccountLocked - "Payment processed successfully" veya bir hata mesajı içeren bir string döndürsün
- Doğrulama için erken dönüşler kullansın
Hata mesajlarını tam olarak şu formatlarda yazdırın:
- "Error: Payment amount must be positive"
- "Error: Insufficient funds"
- "Error: Account is locked"
Kopya kağıdı
Erken dönüşler, bir koşul karşılandığında metodu hemen terk eder, iç içe geçmiş koşullardan kaçınır ve girinti seviyesini azaltır.
Erken dönüşler olmadan (iç içe geçmiş koşullu ifadeler):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Erken dönüşlerle:
public bool ValidateUsername(string username)
{
// Kullanıcı adı null ise erken dönüş yap
if (username == null)
return false;
// Kullanıcı adı çok kısaysa erken dönüş yap
if (username.Length < 3)
return false;
// Kullanıcı adı çok uzunsa erken dönüş yap
if (username.Length > 20)
return false;
// Buraya ulaştıysak, kullanıcı adı geçerli
return true;
}Erken dönüşler kodu daha okunabilir hale getirir ve girinti seviyelerini azaltır.
Kendin dene
using System;
public class Program
{
public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
{
// Buraya kodunuzu yazın
}
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);
}
}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