Early return pattern en C#

Los desarrolladores tienen diferentes estilos y preferencias de codificación, por lo que es importante tener en cuenta que este patrón puede variar según la persona. Early return pattern no es para todos.

Como desarrolladores, uno de nuestros principales objetivos es crear un código limpio, legible y fácil de mantener. Al adoptar patrones de codificación eficientes, podemos mejorar la calidad del código y hacer que nuestro software sea más fácil de entender y modificar. Uno de esos patrones que ha ganado popularidad entre los desarrolladores de C# es el patrón “Early return”. En este artículo, profundizaremos en el concepto del patrón Early Return, resaltando sus ventajas y demostrando su implementación efectiva en código C#.

¿Qué es el Patrón Early return?

El patrón Early Return es una técnica de codificación que detiene una función o método tan pronto como se cumple una condición específica y se evalúa como verdadera. En lugar de continuar con el resto de la lógica de la función, el método devuelve inmediatamente un valor o realiza una acción basada en el resultado de la condición. Este patrón evita el anidamiento innecesario de código y ayuda a agilizar el flujo de ejecución, lo que genera un código más legible y conciso.

Beneficios del Patrón de Regreso Anticipado

  1. Early Return simplifica la estructura del código y mejora la legibilidad al reducir los condicionales anidados. Cada declaración de retorno transmite el resultado explícitamente, lo que hace que el código se explique por sí mismo.
  2. Complejidad ciclomática reducida: la complejidad ciclomática se refiere al número de caminos independientes dentro de una función. Los primeros retornos ayudan a reducir la complejidad ciclomática al minimizar la cantidad de puntos de decisión, lo que da como resultado un código que es más fácil de probar y mantener.
  3. El patrón Early Return mejora la depuración y la refactorización al aislar y facilitar la evaluación de declaraciones de devolución para identificar problemas durante el desarrollo. Además, la refactorización se vuelve más manejable ya que las secciones individuales se pueden modificar sin afectar otras partes del método.

Cómo usar el patrón de retorno anticipado en Csharp

1. Cláusulas de protección:

Las cláusulas de protección son una de las aplicaciones más comunes del patrón Early Return en C#. Estas cláusulas se utilizan al comienzo de un método para verificar entradas o condiciones no válidas que impedirían que el método continuara. En lugar de anidar la lógica principal dentro de un bloque if, las cláusulas de protección permiten que el método regrese de inmediato, lo que indica la falla.

public bool IsIntegerPositive(int number)
{
    // Guard clause to check if the number is valid
    if (number <= 0)
        return false;

    // Main logic - only executed if the number is positive
    // ...

    return true;
}

2. Cheques nulos o vacíos:

Las devoluciones tempranas son particularmente útiles cuando se trata de colecciones, cadenas o cualquier dato que pueda ser nulo o vacío. Devuelve un valor nulo o vacío en lugar de procesarlo mediante varias declaraciones para devolver el valor predeterminado.

public string GetFirstContactFullName(List<Contact> elements)
{
    // Guard clause to check if the list is null or empty
    if (elements == null || elements.Count == 0)
        return null;

    // Main logic - only executed when the list is not empty
    // ...

    return elements
             .Select(p => $"{p.Name} {p.LastName}");
             .FirstOrDefault();

}

3. Condiciones complejas:

Al evaluar condiciones complejas, el patrón Early Return permite a los desarrolladores dividir la lógica en partes más pequeñas y manejables. Esto no solo mejora la legibilidad, sino que también facilita el mantenimiento y la depuración.

public bool ValidateUser(User user)
{
    // Guard clause to check for invalid user data
    if (user == null || string.IsNullOrEmpty(user.Name) || user?.Id <= 0)
        return false;

    // Check if the user is included on the blockeduser list
    if(dbContext.BlockedUsers.Any(p=> p.UserId == user.Id)) return false;

   // perform other actions ...

    return true;
}

El patrón Early Return en C# no es adecuado para todos los desarrolladores, ya que depende de sus preferencias y estilo de codificación. Sin embargo, en muchos escenarios, esta técnica puede ser poderosa y beneficiosa. Puede mejorar la legibilidad del código, simplificar la depuración y reducir la complejidad.

Referencia: https://dev.to/mteheran/the-early-return-pattern-in-c-201c

Recuerda siempre seguir aprendiendo con mis cursos en mteheran.dev/cursos