Clauses de garde
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 19 sur 66.
Les clauses de garde sont des instructions conditionnelles au début d'une méthode qui vérifient les cas limites ou les entrées invalides et effectuent un retour anticipé si ces conditions sont remplies.
Créons une méthode sans clause de garde :
public void ProcessOrder(Order order)
{
if (order != null)
{
// Traiter la commande
// De nombreuses lignes de code ici...
}
}Maintenant, réécrivons-le avec une clause de garde (guard clause) :
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Clause de garde - sortie anticipée si order est null
}
// Process the order
// Many lines of code here...
}Les clauses de garde améliorent la lisibilité en réduisant l'imbrication et en gérant les cas exceptionnels au début d'une méthode.
Défi
FacileCréez une méthode nommée DivideNumbers qui prend deux entiers, numerator et denominator.
- Ajoutez une clause de garde pour vérifier si le dénominateur est égal à zéro.
- Si le dénominateur est zéro, affichez : "Cannot divide by zero" et retournez 0.
- Sinon, divisez le numérateur par le dénominateur et retournez le résultat.
Aide-mémoire
Les clauses de garde (guard clauses) sont des instructions conditionnelles au début d'une méthode qui vérifient les cas limites ou les entrées invalides et retournent prématurément si ces conditions sont remplies.
Sans clause de garde :
public void ProcessOrder(Order order)
{
if (order != null)
{
// Traiter la commande
// De nombreuses lignes de code ici...
}
}Avec une clause de garde :
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // Clause de garde - sortie prématurée si order est null
}
// Traiter la commande
// De nombreuses lignes de code ici...
}Les clauses de garde améliorent la lisibilité en réduisant l'imbrication et en gérant les cas exceptionnels au début d'une méthode.
Essayez vous-même
using System;
public class Program
{
public static int DivideNumbers(int numerator, int denominator)
{
// Écrivez votre code ici
}
public static void Main()
{
// Lire les entrées depuis la console
int numerator = Convert.ToInt32(Console.ReadLine());
int denominator = Convert.ToInt32(Console.ReadLine());
// Appeler la méthode DivideNumbers
int result = DivideNumbers(numerator, denominator);
// Afficher le résultat
Console.WriteLine(result);
}
}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