Menu
Coddy logo textTech

Retours anticipés

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 18 sur 66.

Les retours anticipés sont une technique où nous quittons une méthode dès que nous avons la réponse ou rencontrons une condition invalide, plutôt que d'imbriquer des conditionnels.

Comparons deux approches pour valider un nom d'utilisateur :

Sans retours anticipés (conditionnels imbriqués) :

public bool ValidateUsername(string username)
{
    bool isValid = false;
    
    if (username != null)
    {
        if (username.Length >= 3)
        {
            if (username.Length <= 20)
            {
                isValid = true;
            }
        }
    }
    
    return isValid;
}

Avec des retours anticipés :

public bool ValidateUsername(string username)
{
    // Retour anticipé si username est null
    if (username == null)
        return false;
        
    // Retour anticipé si username est trop court
    if (username.Length < 3)
        return false;
        
    // Retour anticipé si username est trop long
    if (username.Length > 20)
        return false;
        
    // Si nous arrivons ici, username est valide
    return true;
}

Les retours anticipés rendent le code plus lisible et réduisent les niveaux d'indentation.

challenge icon

Défi

Facile

Écrivez une méthode appelée ProcessPayment qui détermine si un paiement peut être traité en fonction de :

  1. Le montant du paiement doit être positif
  2. Le solde du compte doit être suffisant
  3. Le compte ne doit pas être verrouillé

Utilisez des retours précoces pour vérifier chaque condition et retourner les messages d'erreur appropriés.

La méthode doit :

  • Prendre trois paramètres : decimal paymentAmount, decimal accountBalance, et bool isAccountLocked
  • Retourner une chaîne avec soit "Payment processed successfully" soit un message d'erreur
  • Utiliser des retours précoces pour la validation

Imprimez les messages d'erreur exactement dans ces formats :

  • "Error: Payment amount must be positive"
  • "Error: Insufficient funds"
  • "Error: Account is locked"

Aide-mémoire

Les retours précoces sortent d'une méthode immédiatement lorsqu'une condition est remplie, évitant les conditionnels imbriqués et réduisant l'indentation.

Sans retours précoces (conditionnels imbriqués) :

public bool ValidateUsername(string username)
{
    bool isValid = false;
    
    if (username != null)
    {
        if (username.Length >= 3)
        {
            if (username.Length <= 20)
            {
                isValid = true;
            }
        }
    }
    
    return isValid;
}

Avec retours précoces :

public bool ValidateUsername(string username)
{
    // Retour précoce si username est null
    if (username == null)
        return false;
        
    // Retour précoce si username est trop court
    if (username.Length < 3)
        return false;
        
    // Retour précoce si username est trop long
    if (username.Length > 20)
        return false;
        
    // Si nous arrivons ici, username est valide
    return true;
}

Les retours précoces rendent le code plus lisible et réduisent les niveaux d'indentation.

Essayez vous-même

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Écrivez votre code ici
    }
    
    public static void Main(string[] args)
    {
        decimal paymentAmount = decimal.Parse(Console.ReadLine());
        decimal accountBalance = decimal.Parse(Console.ReadLine());
        bool isAccountLocked = bool.Parse(Console.ReadLine());
        
        string result = ProcessPayment(paymentAmount, accountBalance, isAccountLocked);
        Console.WriteLine(result);
    }
}
quiz iconTestez-vous

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