Quindi voglio davvero migliorare il modo in cui modifico il software che codifico. Voglio concentrarmi sulla manutenibilità e sul codice pulito. Come puoi immaginare, ho letto molte risorse su questo argomento e tutto ciò che sta facendo mi rende più difficile stabilirmi su un'architettura perché non posso mai dire se il mio progetto è quello che ha più esperienza il programmatore avrebbe scelto.
Quindi ho questi requisiti:
- Dovrei collegarmi a un unico fornitore e scaricare i moduli di invio dalla loro API. Li chiameremo
CompanyA
. - Dovrei quindi mappare tali invii a uno schema adatto per l'invio a un altro fornitore per l'integrazione con il fornitore di servizi di posta elettronica. Li chiameremo
CompanyB
. - Dovrei quindi inviare tali risposte all'ESP (
CompanyB
) e poi istruire l'ESP a inviare una email a quel mittente.
Quindi in pratica sto copiando i dati da un servizio web a un altro e poi eseguo un'azione su quest'ultimo servizio web.
Ho identificato un paio di servizi di alto livello:
-
Il servizio che scarica i dati da
CompanyA
. Ho chiamato questoCompanyAIntegrator
. -
Il servizio che invia i dati a
CompanyB
. Ho chiamato questoCompanyBIntegrator
.
Quindi le mie domande sono queste:
-
È un buon design? Ho cercato di separare le preoccupazioni e sto pianificando di utilizzare il modello di facciata per rendere gli integratori intercambiabili se i produttori cambiano in futuro.
-
Le mie convenzioni di denominazione sono accurate e significative per te (chi non sa nulla di specifico del progetto)?
-
Ora che ho questi servizi, dove dovrei fare il lavoro di prendere l'output da
CompanyAIntegrator
e ottenerlo nel formato per l'input inCompanyBIntegrator
? Va fatto bene inmain()
? -
Hai qualche indicazione generale su come codificherai qualcosa del genere? Immagino che questo scenario sia comune per noi ingegneri, specialmente quelli che lavorano nelle agenzie.
Grazie per l'aiuto che puoi dare. Imparare a progettare bene l'architettura è davvero ingarbugliato.