Aprende más, haciendo pequeños proyectos Ir a KODOTI
Capacítate con nosotros KODOTI

SOLID #1: Single Responsibility Principle (SRP) con C#

En esta publicación veremos como implementar Single Responsibility Principle usando el lenguaje C#.

Rodríguez Patiño, Eduardo
Publicado:
9,228 lecturas
Rodríguez Patiño, Eduardo

Cada pieza o módulo de tu software debe tener una sola responsabilidad.

class UserService
{
    public bool PayMyDebts(string userID)
    {
        var success = false;

        // El usuario necesita saber si tiene dinero en el banco para cubrir su deuda del mes
        if (HasMoneyAtBank(userID))
        {
            // El usuario va a pagar sus deudas para el mes actual
            success = true;
        }

        return success;
    }

    public bool HasMoneyAtBank(string userId)
    {
        return true;
    }
}

¿Se entiende no?, el usuario desea saber si tiene dinero en el banco para realizar el pago de sus deudas.

¿Cuál es el problema?, que hemos combinado 2 responsabilidades y esto va a ser más complejo de mantener/escalar. El verificar si tiene el dinero suficiente en el banco es otra responsabilidad, no le pertenece directamente al usuario porque posiblemente queramos usar esa lógica en otro lugar y vamos a tener que copiar/pegar código.

El código refactorizado sería el siguiente:

class UserService
{
    private readonly BankService _bankService;

    public UserService(BankService bankService)
    {
        _bankService = bankService;
    }

    public bool PayMyDebts(string userID)
    {
        var success = false;

        // El usuario necesita saber si tiene dinero en el banco para cubrir su deuda del mes
        if (_bankService.HasMoneyAtBank(userID))
        {
            // El usuario va a pagar sus deudas para el mes actual
            success = true;
        }

        return success;
    }

}

class BankService
{
    public bool HasMoneyAtBank(string userId)
    {
        return true;
    }
}

De esta manera podemos hacer mejoras al BankService sin tener que tocar la clase UserService.


Estudia con nosotros

🚀 Mejora tus oportunidades laborales


¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín