Sto lavorando a una serie di test automatizzati che utilizziamo internamente al lavoro. Ultimamente, abbiamo progettato classi che implementano interfacce oltre all'ereditarietà.
A quanto ho capito, le interfacce in Java sono utilizzate per soddisfare un contratto. Una classe che implementa un'interfaccia deve includere implementazioni di qualsiasi membro di tale interfaccia. Questo funziona molto bene per la creazione di librerie o oggetti che devono essere utilizzati da team o individui esterni poiché garantisce che alcuni metodi saranno presenti.
Che dire del codice interamente conservato in una singola squadra in una singola posizione? (Supponiamo che questo codice rimarrà interno, altrimenti questa domanda cambierà completamente.) Se posso semplicemente andare alla mia cronologia VCS o chiedere a un membro del team delle modifiche al codice, devo davvero applicare queste modifiche usando le interfacce? Anche se una squadra è grande, potresti ancora sviluppare convenzioni o test per verificare le cose. Mi sento come se stessimo semplicemente lavorando di più usando le interfacce, ma forse ci sono argomenti addizionali.
NOTA: questo progetto è un progetto Java e rimarrà tale. Le interfacce qui sono istanze di interface
con tutte le sintassi e le regole applicabili.