Refactor - K3052 - Ignacio Martinez Beraza #8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
climalert
Cambios y justificaciones
Entidad Email
Actualmente esta clase mezcla la capa de dominio con la capa de logica de negocio. Esto se ve en el
metodo enviar(). Esto deberia ser responsabilidad de un servicio externo.
Ademas, esto ultimo viola el principio de Open/Closed (OCP) ya que ante cualquier modificacion en el
envio particular de emails, uno tendria que tocar la clase Email modificando su comportamiento y no
extendiendolo.
Se creo una interfaz IEmailSender que encapsule este comportamiento, ademas
se agrego una implementacion particular en la clase DefaultEmailSender y se agrego un atributo de este
tipo de interfaz en el servicio EmailService.
Dejo un ejemplo de como queda el Servicio principal con el nuevo emailSender como atributo de clase
Entidad Alert
Agrego la entidad de dominio "Alerta" o "Alert" en el que se vea representado el mensaje en si que emitira la app.
Ademas de esto, agrego el repositorio especifico para esta entidad (junto con una abstraccion IAlertRepository para
respetar el principio de inversion de dependencias).
Tambien se agrego el componente de "Alert condition" para que se pueda detectar cuando es necesario
disparar la alerta en base a las condiciones climaticas configuradas en dicho componente a modo de parametros.