Refatoração de services para implementação de a partir de interfaces e ajustes no modelo de events #37
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.
Descrição
Este pull request introduz melhorias e boas práticas de design, tornando o código aderente aos princípios SOLID, resultando em um código mais robusto, testável e fácil de manter.
Single Responsibility Principle (SRP)
Ex: A lógica de manipulação de tokens é delegada ao repositório, enquanto o serviço se concentra na lógica de negócios relacionada à validação e atualização de tokens. Isso divide responsabilidades claramente.
Ex: Definição de TokenService, CalendarService e EmailService, EventRepository, etc.
Liskov Substitution Principle (LSP)
Os serviços agora dependem de uma interface, facilitando a substituição por diferentes implementações que seguem a mesma interface, garantindo que o comportamento do sistema permaneça correto.
Interface Segregation Principle (ISP)
Interfaces bem definidas e segregadas garantem que cada classe ou módulo só dependa dos métodos que realmente utiliza, mantendo o código mais limpo e focado.
Dependency Inversion Principle (DIP)
O serviço depende de abstrações (interfaces), permitindo injetar diferentes implementações de repositórios. Isso facilita a substituição e a criação de mocks para testes.