Sto lavorando a un progetto software in cui dobbiamo costruire tre API. Uno per il canale bancario home , uno per il canale agenzia e un terzo per il canale mobile .
L'API dell'agenzia è la più completa in quanto ha tutte le funzionalità .. quindi un'API Home più piccola e quindi un'API mobile.
Gli architetti qui hanno creato uno strato comune (servizi EJB cross-channel condivisi da tutte le API). Ma poi le API sono diverse.
Per ora non c'è una grande differenza tra le API. Il grande team è iniziato con il canale dell'agenzia e ora lo stiamo adattando per il canale home. Stiamo semplicemente arricchendo gli oggetti appositamente per la nostra app di casa. In caso contrario, il codice è simile al 95% tra le API. Le API sono basate su Spring MVC , e ha (controller, modelli e alcuni utilities).
Fondamentalmente i controllori stanno facendo il mapping da BO a ChannelObject (non mi sembra il posto giusto per farlo), e alcune utility e serializzatori extra. Tutto è duplicato per ora. Stanno dicendo che la ragione della duplicazione è che vogliono che le API siano indipendenti. "Se domani vogliamo un comportamento diverso per casa piuttosto che per agenzia o per cellulare, non ci sforzeremo !!"
C'è un caso in cui dovremmo accettare il codice duplicato?