Sto rilevando un progetto in cui ogni singola classe reale sta implementando un'interfaccia. La maggior parte di queste interfacce è implementata da una singola classe che condivide un nome simile e gli stessi identici metodi (ad es. MyCar e MyCarImpl). Quasi 2 classi nel progetto implementano più dell'interfaccia che condivide il suo nome.
So che la raccomandazione generale è quella di codificare un'interfaccia piuttosto che un'implementazione, ma non è forse un po 'troppo lontano? Il sistema potrebbe essere più flessibile in quanto è più facile aggiungere una nuova classe che si comporta in modo molto simile a una classe esistente. Tuttavia, è molto più difficile analizzare il codice e le modifiche al metodo ora richiedono 2 modifiche anziché 1.
Personalmente, normalmente creo solo interfacce quando è necessario che più classi abbiano lo stesso comportamento. Mi iscrivo a YAGNI , quindi non creo qualcosa a meno che non ne vedo il reale bisogno. Sto sbagliando tutto o questo progetto sta andando in porto?