Menu
Coddy logo textTech

Refactoring Loops

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 16 von 66.

Das Refactoring von Schleifen kann die Lesbarkeit und Wartbarkeit des Codes verbessern.

Ersetze die traditionelle Schleife durch foreach zur Vereinfachung:

string[] fruits = { "apple", "banana", "cherry" };

// Vor der Refaktorierung
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine(fruits[i]);
}

// Nach der Refaktorierung
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Komplexe Schleifenlogik in Methoden extrahieren:

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;
}

Zerlegen Sie große Schleifen in kleinere, fokussiertere Schleifen:

int[] data = { 1, 2, 3, 4, 5 };

// Before: One large loop doing multiple things
for (int i = 0; i < data.Length; i++)
{
    // Process data
    data[i] = data[i] * 2;
    // Print results
    Console.WriteLine(data[i]);
}

// After: Separate loops with clear purposes
// Process data
for (int i = 0; i < data.Length; i++)
{
    data[i] = data[i] * 2;
}

// Print results
for (int i = 0; i < data.Length; i++)
{
    Console.WriteLine(data[i]);
}
challenge icon

Aufgabe

Mittel

Erstellen Sie eine Methode namens refactorArrayFilter, die:

  1. Nimmt ein Array von Ganzzahlen als Parameter
  2. Implementiert zwei Versionen von Code, die die Anzahl der durch 3 teilbaren Zahlen zählen:
    • Original: Verwenden Sie eine traditionelle for-Schleife mit einer if-Anweisung
    • Refactored: Verwenden Sie eine foreach-Schleife mit der Logik, die in eine Hilfsmethode extrahiert wurde
  3. Gibt die Zählung aus der refaktorierten Version als Ganzzahl zurück

Zum Beispiel, bei dem Array [3, 4, 6, 7, 9] sollte die Methode 3 zurückgeben, da es drei Zahlen (3, 6 und 9) gibt, die durch 3 teilbar sind.

Hinweis: Sie müssen nichts ausgeben – geben Sie einfach die Zählung als Ganzzahl zurück.

Spickzettel

Verwenden Sie foreach anstelle traditioneller for-Schleifen für einfachere Array-Iteration:

// 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);
}

Extrahieren Sie komplexe Schleifenlogik in Hilfsmethoden:

// 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;
}

Zerlegen Sie große Schleifen in kleinere, fokussierte Schleifen mit einzelnen Verantwortlichkeiten:

// 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
}

Probier es selbst

public class RefactorArrayFilter
{
    // Implementieren Sie die refactorArrayFilter-Methode
    public static int refactorArrayFilter(int[] numbers)
    {
        // Schreiben Sie Ihren Code hier
        
    }
    
    // Implementieren Sie alle benötigten Hilfsmethoden
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf