Il fatto che la logica aziendale sia mappata su interfacce anziché implementazioni ostacola effettivamente il mantenimento dell'applicazione in determinate situazioni?
Un esempio ingenuo con il framework Hibernate di Java sarebbe, ad esempio (ammesso che non abbia l'intero codice base nella mia testa, la struttura del progetto è un casino e le classi sono nominate con nomi arbitrari) se desidero per vedere cosa sta succedendo in un certo DAO, per vedere se effettivamente sta facendo ciò che deve fare, quindi invece di attraversare la struttura verso l'alto dal punto in cui viene richiamato il servizio dati (dove l'albero terminerà in un'interfaccia con nessun dettaglio di implementazione a prescindere dalla firma) Devo, ad esempio, andare a cercare un file XML di configurazione per vedere quale classe è mappata a detta interfaccia come implementazione prima di poter accedere ai dettagli di implementazione reali.
Ci sono situazioni in cui l'accoppiamento libero può effettivamente danneggiare la manutenibilità?