Refactorisation des boucles
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 16 sur 66.
Refactoriser les boucles peut améliorer la lisibilité et la maintenabilité du code.
Remplacez la boucle traditionnelle par foreach pour plus de simplicité :
string[] fruits = { "apple", "banana", "cherry" };
// Avant la refactorisation
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// Après la refactorisation
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}Extraire la logique de boucle complexe dans des méthodes :
int[] numbers = { 1, 2, 3, 4, 5, 6, };
// Avant la refactorisation
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 2 == 0)
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// Après refactorisation avec méthode auxiliaire
for (int i = 0; i < numbers.Length; i++)
{
if (IsEven(numbers[i]))
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// Méthode auxiliaire
bool IsEven(int number)
{
return number % 2 == 0;
}Divisez les grandes boucles en boucles plus petites et plus ciblées :
int[] data = { 1, 2, 3, 4, 5 };
// Avant : Une grande boucle effectuant plusieurs tâches
for (int i = 0; i < data.Length; i++)
{
// Traiter les données
data[i] = data[i] * 2;
// Afficher les résultats
Console.WriteLine(data[i]);
}
// Après : Boucles séparées avec des objectifs clairs
// Traiter les données
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2;
}
// Afficher les résultats
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine(data[i]);
}Défi
MoyenCréez une méthode appelée refactoredArrayFilter qui :
- Prend un tableau d'entiers en paramètre
- Implémente deux versions de code qui comptent les nombres divisibles par 3 :
- Original : Utilisez une boucle for traditionnelle avec une instruction if
- Refactorisé : Utilisez une boucle foreach avec la logique extraite vers une méthode d'aide
- Retourne le compte de la version refactorisée sous forme d'entier
Par exemple, donné le tableau [3, 4, 6, 7, 9], la méthode devrait retourner 3 car il y a trois nombres (3, 6 et 9) qui sont divisibles par 3.
Note : Vous n'avez pas besoin d'imprimer quoi que ce soit - retournez simplement le compte sous forme d'entier.
Essayez vous-même
public class RefactorArrayFilter
{
// Implémentez la méthode refactorArrayFilter
public static int refactorArrayFilter(int[] numbers)
{
// Écrivez votre code ici
}
// Implémentez toute méthode auxiliaire dont vous avez besoin
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety