Menu
Coddy logo textTech

Early Returns

Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 18 de 66.

Los retornos tempranos son una técnica donde salimos de un método tan pronto como tenemos la respuesta o encontramos una condición inválida, en lugar de anidar condicionales.

Comparemos dos enfoques para validar un nombre de usuario:

Sin retornos tempranos (condicionales anidados):

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

Con retornos tempranos:

public bool ValidateUsername(string username)
{
    // Retornar temprano si username es null
    if (username == null)
        return false;
        
    // Retornar temprano si username es demasiado corto
    if (username.Length < 3)
        return false;
        
    // Retornar temprano si username es demasiado largo
    if (username.Length > 20)
        return false;
        
    // Si llegamos aquí, username es válido
    return true;
}

Los retornos tempranos hacen que el código sea más legible y reducen los niveles de indentación.

challenge icon

Desafío

Fácil

Escribe un método llamado ProcessPayment que determine si un pago puede ser procesado basado en:

  1. El monto del pago debe ser positivo
  2. El saldo de la cuenta debe ser suficiente
  3. La cuenta no debe estar bloqueada

Usa retornos tempranos para verificar cada condición y retornar mensajes de error apropiados.

El método debe:

  • Tomar tres parámetros: decimal paymentAmount, decimal accountBalance, y bool isAccountLocked
  • Retornar una cadena con ya sea "Payment processed successfully" o un mensaje de error
  • Usar retornos tempranos para la validación

Imprime mensajes de error en exactamente estos formatos:

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

Hoja de referencia

Los retornos tempranos salen de un método inmediatamente cuando se cumple una condición, evitando condicionales anidados y reduciendo la indentación.

Sin retornos tempranos (condicionales anidados):

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

Con retornos tempranos:

public bool ValidateUsername(string username)
{
    // Return early if username is null
    if (username == null)
        return false;
        
    // Return early if username is too short
    if (username.Length < 3)
        return false;
        
    // Return early if username is too long
    if (username.Length > 20)
        return false;
        
    // If we get here, username is valid
    return true;
}

Los retornos tempranos hacen que el código sea más legible y reducen los niveles de indentación.

Pruébalo tú mismo

using System;

public class Program
{
    public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
    {
        // Escribe tu código aquí
    }
    
    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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo