Per esempio:
Dire che ho classi A
, B
, C
. Ho due interfacce, chiamiamole IAnimal
e IDog
. IDog
eredita da IAnimal
. A
e B
sono IDog
s, mentre C
non lo è, ma è un IAnimal
.
La parte importante è che IDog
non fornisce funzionalità aggiuntive. Viene utilizzato solo per consentire A
e B
, ma non C
, essere passato come argomento a determinati metodi.
Questa è una cattiva pratica?
MyProject.Data.IAnimal
e MyProject.Data.Animal
sono meglio di MyProject.Data.Interfaces.Animal
e MyProject.Data.Implementations.Animal
Interface
o 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 Dog
non necessita neanche di ridondanza di implementazione, la parola extends
mi dice tutto quello che devo sapere, leggi il link che ho pubblicato nel mio commento originale.
IAnimal
eIDog
sono terribili nomi di tautologia!