I assume this is largely language-agnostic, but I'm working in C# if it's not
Diciamo che l'interfaccia I3 eredita da I2 , che a sua volta eredita da I1 . Potrei scrivere questo:
interface I1 { ... }
interface I2 : I1 { ... }
interface I3 : I2 { ... }
O in alternativa questo:
interface I1 { ... }
interface I2 : I1 { ... }
interface I3 : I1, I2 { ... }
Il I1 in interface I3 è ridondante - tutto ciò che implementa I3 richiederà comunque qualcosa dichiarato in I2 , che include qualsiasi cosa in I1 .
A mio parere, quest'ultimo è più leggibile - posso vedere a colpo d'occhio tutte le interfacce di "base" senza dover scavare giù l'albero di ereditarietà, ma non sono sicuro che sia considerato una buona pratica. È? Ci sono trappole nascoste qui?