Schleifen refaktorieren
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 16 von 66.
Das Refaktorieren von Schleifen kann die Lesbarkeit und Wartbarkeit des Codes verbessern.
Ersetze die herkömmliche Schleife durch foreach, um sie zu vereinfachen:
string[] fruits = { "apple", "banana", "cherry" };
// Vor dem Refactoring
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// Nach dem Refactoring
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
MittelErstelle eine Methode namens refactorArrayFilter, die:
- ein Array von Ganzzahlen als Parameter entgegennimmt
- zwei Versionen von Code implementiert, die durch 3 teilbare Zahlen zählen:
- Original: Verwende eine traditionelle for-Schleife mit einer if-Anweisung
- Refaktoriert: Verwende eine foreach-Schleife, wobei die Logik in eine Hilfsmethode ausgelagert wird
- die Anzahl aus der refaktorierten Version als Ganzzahl zurückgibt
Beispielsweise sollte die Methode bei dem Array [3, 4, 6, 7, 9] den Wert 3 zurückgeben, da es drei Zahlen (3, 6 und 9) gibt, die durch 3 teilbar sind.
Hinweis: Du musst nichts ausgeben – gib einfach die Anzahl als Ganzzahl zurück.
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
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler