Anexsoft | Blog y dictado de cursos de Tecnología

En este encontrarás tutoriales de tecnología como PHP, ASP.NET MVC, Front-End, entre otros y cursos exigentes de modalidad online que te ayudarán a crecer profesionalmente.

SOLID #1: Single Responsibility Principle (SRP) con C#
Actualizado hace 21 días y leído 221 veces
Calificación: Sin calificar 10

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

Anexsoft

Cada módulo de tu software tiene una sola responsabilidad, por lo tanto no debería ser mutli tarea. Ejm: tu business logic, service o como lo quieran llamar.

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.

¡Adquiera ya!

  • Código de fuente de Red Social desarrollada en ASP.NET MVC

    Código de fuente de Red Social desarrollada en ASP.NET MVC
  • Software de Venta e Inventario hecho en PHP y Codeigniter

    Software de Venta e Inventario hecho en PHP y Codeigniter
  • Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

    Software de Portafolio Profesional hecho en ASP.NET MVC 5 C#

Últimas publicaciones

Encuesta

¿Cómo nos conociste?

Síguenos

Estudia con nosotros y crece profesionalmente

Nuestros cursos han sido hecho en base a lo que demanda el mercado hoy en día.
La experiencia obtenida es la de un ambiente laboral.

Anexsoft
© 2017 Anexsoft, blog y cursos online de TI.