Menu
Coddy logo textTech

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]);
}
challenge icon

Görev

Orta

refactorArrayFilter adında bir metot oluşturun ki:

  1. Bir tamsayı dizisini parametre olarak alır
  2. 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
  3. 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
}
quiz iconKendini test et

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