Menu
Coddy logo textTech

Uscite anticipate

Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 18 di 66.

I ritorni anticipati sono una tecnica che consiste nell’uscire da un metodo non appena abbiamo la risposta o incontriamo una condizione non valida, anziché annidare le condizioni.

Confrontiamo due approcci per convalidare un nome utente:

Senza ritorni anticipati (condizionali annidati):

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

Con i ritorni anticipati:

public bool ValidateUsername(string username)
{
    // Restituisci subito se username è null
    if (username == null)
        return false;
        
    // Restituisci subito se username è troppo corto
    if (username.Length < 3)
        return false;
        
    // Restituisci subito se username è troppo lungo
    if (username.Length > 20)
        return false;
        
    // Se arriviamo qui, username è valido
    return true;
}

I ritorni anticipati rendono il codice più leggibile e riducono i livelli di indentazione.

challenge icon

Sfida

Facile

Scrivi un metodo chiamato ProcessPayment che determina se un pagamento può essere elaborato in base a quanto segue:

  1. L’importo del pagamento deve essere positivo
  2. Il saldo del conto deve essere sufficiente
  3. Il conto non deve essere bloccato

Usa le restituzioni anticipate per verificare ogni condizione e restituire i messaggi di errore appropriati.

Il metodo deve:

  • Accettare tre parametri: decimal paymentAmount, decimal accountBalance e bool isAccountLocked
  • Restituire una stringa con "Payment processed successfully" oppure un messaggio di errore
  • Usare le restituzioni anticipate per la convalida

Stampa i messaggi di errore esattamente in questi formati:

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

Provalo tu

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Scrivi il tuo codice qui
    }
    
    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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online