iTeacher
iTeacher copied to clipboard
Interface Segregation Principle (ISP)
A ISP diz o seguinte: Clients should not be forced to depend upon interfaces that they do not use.
No arquivo base-repository.interface.ts
, existem alguns métodos (crud básico), mas também existe este: findByEmail(email: string): Promise<T | null>;
.
Para adequar o código ao príncipio, esse método deveria ser movido para users.repository.interface.ts
.
Na realidade, o padrão generic repository, nesta fase do projeto, poderia ser considerado como over engineering, afinal só existe um módulo (e este módulo utiliza apenas dois métodos do repositório: create
e findByEmail
).
Ao longo prazo, isso também é ruim, porque quanto mais métodos você enfia no base-repository, mais métodos ficam disponíveis para implementações que não precisam de todos estes métodos, aumentando a área de superfície para bugs e violações de outros princípios. Por exemplo, imagine uma implementação chamada AulaRepository fazendo o uso do método findByEmail
: não faz sentido, correto?