Per esempio:
Dire che ho classi A, B, C. Ho due interfacce, chiamiamole IAnimale IDog. IDogeredita da IAnimal. Ae Bsono IDogs, mentre Cnon lo è, ma è un IAnimal.
La parte importante è che IDognon fornisce funzionalità aggiuntive. Viene utilizzato solo per consentire Ae B, ma non C, essere passato come argomento a determinati metodi.
Questa è una cattiva pratica?
MyProject.Data.IAnimale MyProject.Data.Animalsono meglio di MyProject.Data.Interfaces.Animale MyProject.Data.Implementations.Animal
Interfaceo Implementation, se in un prefisso ripetitivi o uno spazio dei nomi sia, è una tautologia in entrambi i casi e viola SECCO. Dogè tutto ciò di cui dovresti preoccuparti. PitBull extends Dognon necessita neanche di ridondanza di implementazione, la parola extendsmi dice tutto quello che devo sapere, leggi il link che ho pubblicato nel mio commento originale.
IAnimaleIDogsono terribili nomi di tautologia!