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]);
}Aufgabe
MittelErstellen Sie eine Methode namens refactorArrayFilter, die:
- Nimmt ein Array von Ganzzahlen als Parameter
- 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
- 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
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
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