Na przykład:
Że mam zajęcia A
, B
, C
. Mam dwa interfejsy, nazwijmy je IAnimal
i IDog
. IDog
dziedziczy po IAnimal
. A
i B
są IDog
, chociaż C
nie jest, ale jest IAnimal
.
Ważną częścią jest to, że IDog
nie zapewnia żadnej dodatkowej funkcjonalności. Służy wyłącznie do zezwalania A
i przekazywania B
, ale nie C
do przekazania, jako argumentu dla niektórych metod.
Czy to zła praktyka?
MyProject.Data.IAnimal
i MyProject.Data.Animal
są lepsze niż MyProject.Data.Interfaces.Animal
i MyProject.Data.Implementations.Animal
Interface
albo Implementation
, czy w powtarzalnym prefiksie, czy też w przestrzeni nazw, jest to tautologia w obu kierunkach i narusza DRY. Dog
to wszystko, o co powinieneś dbać. PitBull extends Dog
nie potrzebuje też redundancji implementacji, słowo extends
mówi mi wszystko, co muszę wiedzieć, przeczytaj link, który zamieściłem w moim oryginalnym komentarzu.
IAnimal
iIDog
są okropnymi nazwami tautologicznymi!