Prefixing interfaces com I?
Atualmente, estou lendo "Código Limpo", de Rober Martin (UncleBob), e geralmente amando as reflexões do UncleBob. No entanto, fiquei um pouco confuso quando li que ele evita prefixar interfaces como "IPerson". Ele afirma: "Não quero que meus usuários saibam que estou entregando uma interface a eles".
ensando na perspectiva do TDD / injeção, sempre estarei muito interessado em dizer aos "usuários" de minhas classes que estou entregando uma interface. A principal razão é que considero os contratos de interfaces entre os diferentes "agentes" de um sistema. Um agente que trabalha com um canto do meu sistema não deve conhecer a implementação concreta do trabalho de outro agente; eles devem apenas trocar contratos e esperar que os contratos sejam cumpridos sem saber como. A outra razão, mas também muito importante, é que uma interface pode ser totalmente ridicularizada, facilitando muito o teste de unidade. Existem limites para o quanto você pode zombar de uma aula concret
Portanto, prefiro visualizar que estou realmente entregando uma interface ... ou assumindo uma interface como argumento. Mas como o UncleBob é um campeão dos pesos pesados em nossa comunidade, e eu sou apenas mais um jóquei de mesa, gostaria de saber se estou perdendo alguma coisa.
É errado eu insistir em interfaces nas interfaces