Inicio » Comunidad » Refactorizar condicionales

Refactorizar condicionales

Resuelto Cerrado
0
0

Buenas tardes,

Tengo una duda en el momento de refactorizar, he observado que en el código se utiliza varias veces este patrón:


if (empty($customerId)) {
    return 'login';
}

$customer =  $this->customerRepository->find($customerId);
$customerExist = count($customer) > 0;


if (!$customerExist) {
    return 'register';
}

if (!$this->customerHasLicense($customerId)) {
    return 'buy';
}

return 'index';
  • Hace una consulta a la BBDD en la tabla customer
  • Hace una comprobación si el customer existe
  • Crea unas condiciones a partir de la consulta

Así que lo encapsulé  en una función llamada checkIfCustomerExistByCustomerId($customerId)

public function checkIfCustomerExistByCustomerId(string $customerId)
{
    $customer =  $this->customerRepository->find($customerId);
    return count($customer) > 0;
}

Mi duda es donde tengo que encapsular está lógica, en el repositorio?

Por último, ¿las condiciones se podrían crear de otra forma?

  • admin
    Hola Alex, no me queda claro que es lo que quieres conseguir con esta lógica. Me puedes detallar un poco que quiere hacer con este bloque de código. De esta manera podré darte una mejor solución.
Muy buena respuesta
0
0

Mi consulta es que estas condiciones están dentro por ejemplo en un caso de uso, y lo veo más como lógica de negocio, nosé si lo mejor es poner las condiciones en un middleware o en el repositorio customer?.

 

  • admin
    Necesitaría más contexto para saber si esa lógica se debería encapsular en una entidad. Ya que, en un principio, parece ser que se está generando un tag (login, register, buy…) en función de unas condiciones y el repositorio. Con lo cual, tiene más sentido crear un servicio de dominio para encapsular esa lógica que se encarga de generar esos tags.
0
0

Gracias Agustin! Me sirve lo del servicio de dominio!

2 resultados
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad