Refactoring Loops
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 16 / 66.
Döngüleri yeniden yapılandırmak kod okunabilirliğini ve bakımını iyileştirebilir.
Basitlik için geleneksel döngüyü foreach ile değiştirin:
string[] fruits = { "apple", "banana", "cherry" };
// Yeniden düzenlemeden önce
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// Yeniden düzenlemeden sonra
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}Karmaşık döngü mantığını metodlara çıkarın:
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// Before refactoring
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 2 == 0)
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// After refactoring with helper method
for (int i = 0; i < numbers.Length; i++)
{
if (IsEven(numbers[i]))
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// Helper method
bool IsEven(int number)
{
return number % 2 == 0;
}Büyük döngüleri daha küçük, daha odaklı döngülere ayırın:
int[] data = { 1, 2, 3, 4, 5 };
// Önce: Birden fazla iş yapan tek büyük döngü
for (int i = 0; i < data.Length; i++)
{
// Veriyi işle
data[i] = data[i] * 2;
// Sonuçları yazdır
Console.WriteLine(data[i]);
}
// Sonra: Net amaçlara sahip ayrı döngüler
// Veriyi işle
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2;
}
// Sonuçları yazdır
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine(data[i]);
}Görev
OrtarefactorArrayFilter adında bir metot oluşturun ki:
- Bir tamsayı dizisini parametre olarak alır
- 3'e bölünebilen sayıları sayan iki kod versiyonu uygular:
- Orijinal: Bir if ifadesiyle geleneksel for döngüsü kullanın
- Yeniden düzenlenmiş: Mantığı yardımcı bir metoda çıkarılan foreach döngüsü kullanın
- Yeniden düzenlenmiş versiyondan sayıyı tamsayı olarak döndürür
Örneğin, [3, 4, 6, 7, 9] dizisi verildiğinde metot 3 döndürmelidir çünkü 3'e bölünebilen üç sayı vardır (3, 6 ve 9).
Not: Hiçbir şey yazdırmanıza gerek yok - sadece sayıyı tamsayı olarak döndürün.
Kopya kağıdı
foreach'i daha basit dizi yinelemesi için geleneksel for döngüleri yerine kullanın:
// Traditional for loop
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// Refactored with foreach
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}Karmaşık döngü mantığını yardımcı yöntemlere çıkarın:
// Before refactoring
if (numbers[i] % 2 == 0)
{
Console.WriteLine($"{numbers[i]} is even");
}
// After refactoring with helper method
if (IsEven(numbers[i]))
{
Console.WriteLine($"{numbers[i]} is even");
}
// Helper method
bool IsEven(int number)
{
return number % 2 == 0;
}Büyük döngüleri tek sorumluluğa sahip daha küçük, odaklanmış döngülere ayırın:
// Before: One loop doing multiple things
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2; // Process
Console.WriteLine(data[i]); // Print
}
// After: Separate loops with clear purposes
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2; // Process only
}
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine(data[i]); // Print only
}Kendin dene
public class RefactorArrayFilter
{
// refactorArrayFilter metodunu uygulayın
public static int refactorArrayFilter(int[] numbers)
{
// Kodu buraya yazın
}
// İhtiyacınız olan yardımcı metodları uygulayın
}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