Ho appena ereditato un'applicazione Java e dopo aver esaminato il codice, sto vedendo che IMHO è una bastardizzazione del framework Spring. Vedete, il team di Java sembra avere un'avversione per le interfacce, così si finisce con le cose in questo modo:Primavera come fabbrica glorificata; è accettabile?
@Autowired
private SomeConcreteFinalClass _myField;
Non c'è nessuna configurazione di Primavera, non fagiolo definito, nessuna possibilità che io possa provare l'oggetto che contiene in isolamento . Questa è essenzialmente una fabbrica basata su annotazioni con il sovraccarico di Spring.
Sono fuori linea, o è come usare una pistola ad elefante per uccidere le mosche? Devo solo avere un controllo di realtà dal tutti gli altri membri del team pensano che questo sia perfettamente accettabile.
Modifica In molti casi queste fabbriche annotate vengono visualizzate in classi di elaborazione complesse che trarrebbero un vantaggio immenso da test isolati. Tuttavia, il team disapprova anche i test.
Non c'è mistero qui, spero. Se ho una classe concreta, non è dietro un'interfaccia, e non c'è un bean Spring corrispondente per "configurare" l'oggetto, quindi è indiscutibilmente una fabbrica glorificata che può essere implementata con 10 linee di codice.
La molla non viene utilizzata in alcun altro modo nel sistema; questo è.
I miei obiettivi in questo momento:
- istituire una politica di test
- Educare la squadra sulle virtù del componente isolamento
- spostare questi campi Autowired dietro interfacce
I Immagino che l'ultima domanda sia: c'è qualche vantaggio nel mantenere questi campi Autowired se non siamo testin g o in qualsiasi altro modo utilizzando la struttura. Mi piacerebbe anche new
l'oggetto se la dipendenza è immutabile.
Ovviamente: un elefante è l'arma preferita per uccidere le mosche mutanti di dimensioni elefante –