Guard Clauses
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 19 / 66.
Koruma ifadeleri (guard clauses), bir metodun başında yer alan, uç durumları veya geçersiz girdileri kontrol eden ve bu koşullar sağlandığında erken dönüş yapan koşullu ifadelerdir.
Koruma ifadesi (guard clause) içermeyen bir metot oluşturalım:
public void ProcessOrder(Order order)
{
if (order != null)
{
// Siparişi işle
// Burada birçok satır kod var...
}
}Şimdi, bunu bir koruma ifadesi (guard clause) ile yeniden yazalım:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Koruma ifadesi - sipariş null ise erkenden çık
}
// Siparişi işle
// Burada birçok satır kod var...
}Guard clause'lar, iç içe geçmeyi azaltarak ve istisnai durumları bir metodun başında ele alarak okunabilirliği artırır.
Görev
Kolaynumerator ve denominator adında iki tam sayı alan DivideNumbers adında bir metot oluşturun.
- Paydanın sıfır olup olmadığını kontrol etmek için bir koruma ifadesi (guard clause) ekleyin.
- Eğer payda sıfır ise, "Cannot divide by zero" yazdırın ve 0 döndürün.
- Aksi takdirde, payı paydaya bölün ve sonucu döndürün.
Kopya kağıdı
Guard clause'lar (koruma ifadeleri), bir metodun başında uç durumları veya geçersiz girdileri kontrol eden ve bu koşullar karşılandığında erkenden geri dönen koşullu ifadelerdir.
Guard clause olmadan:
public void ProcessOrder(Order order)
{
if (order != null)
{
// Siparişi işle
// Burada birçok satır kod var...
}
}Guard clause ile:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Guard clause - sipariş null ise erkenden çık
}
// Siparişi işle
// Burada birçok satır kod var...
}Guard clause'lar, iç içe geçmeyi azaltarak ve istisnai durumları bir metodun başında ele alarak okunabilirliği artırır.
Kendin dene
using System;
public class Program
{
public static int DivideNumbers(int numerator, int denominator)
{
// Kodunuzu buraya yazın
}
public static void Main()
{
// Konsoldan girdileri oku
int numerator = Convert.ToInt32(Console.ReadLine());
int denominator = Convert.ToInt32(Console.ReadLine());
// DivideNumbers metodunu çağır
int result = DivideNumbers(numerator, denominator);
// Sonucu yazdır
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