Come parte delle dipendenze del progetto su cui sto lavorando, utilizziamo diversi servizi di base. Questi servizi, ai quali non possiamo apportare grandi cambiamenti, sono un gran casino. A seconda del metodo che invochiamo, dobbiamo convertire i nostri parametri (e restituire i valori) in codifiche, impostazioni locali e fusi orari diversi.
Poiché generiamo questi parametri in più punti nel nostro codice, eseguiamo queste conversioni in più punti. Alcune volte dove li generiamo, prima di passarli dalla nostra parte; qualche volta prima di invocare il metodo nel servizio principale. Quindi il caos si sta diffondendo nel nostro codice e voglio introdurre un livello per isolarlo.
La mia domanda è qual è l'approccio migliore per questo. Inizialmente pensavo di creare solo un servizio / metodo corrispondente a ciascun servizio / metodo che dovevamo usare. Questi metodi eseguono semplicemente la conversione, delegano ai servizi di base ed eseguono la conversione del valore di ritorno. Ma questo sembra in qualche modo ingombrante.
Poi ho pensato di usare le annotazioni, ma non sono completamente sicuro di come usarle. E a quanto ho capito, idealmente avrei bisogno di annotare il metodo invocato. Ad esempio, potrei annotare i parametri con @converToUtc
e fare la conversione nell'implementazione dell'annotazione. È corretto? Certo, questo è difficile perché non è il nostro codice e romperà il codice che attualmente usa quei metodi in progetti diversi dal nostro.
Qual è l'approccio migliore per questa situazione?