Lavorare con un oggetto grande e disordinato [duplicato]

2

Mi è stato consegnato un oggetto molto ingombrante, "One Ring" (un oggetto per dominarli tutti). La classe OR ha 40 campi. Questi campi si associano a 16 oggetti diversi (l'OR ha tutti i campi dei 16 oggetti concatenati insieme. Alcuni dei campi sono comuni a tutti gli oggetti, alcuni sono unici per singoli oggetti [tutti i 16 oggetti discendono da un genitore comune] ). L'OR punta a una tabella catch-all in un database SQL denormalizzato. Mi è stato chiesto di scrivere un adattatore per questo che prenderà istanze casuali dei 16 oggetti, mapperà i campi da un dato oggetto a un'istanza dell'OR e li invierà per la sua strada. Oy.

Cambiare il back-end o il codice non è un'opzione (ho provato).

Come sono sicuro non è una sorpresa, questa bestia è una cosa cattiva da gestire. Mi piacerebbe sentire qualche idea su come contribuire a rendere il lavoro con questo un po 'più gestibile. Sono principalmente interessato alla manutenzione del codice: comprensione e leggibilità. So che qualsiasi cosa venga implementata sarà ben lungi dall'essere perfetta, perché fondamentalmente sto cercando di far sembrare carina la spazzatura. Detto questo, per ora, devo conviverci, quindi sto cercando di rendere il mio lato del treno un po 'più vivibile.

    
posta user2646829 18.06.2014 - 23:11
fonte

1 risposta

11

Questo è un esempio di schema di facciata , che può fornire alcuni punti di partenza per la tua ricerca. Ho anche visto un livello anti-corruzione .

Fondamentalmente, crei la tua API dei sogni, quella che avresti creato se partissi da zero oggi, ma la implementassi effettuando chiamate al back-end orribile attuale. Quindi puoi spostare lentamente il codice chiamante alla tua nuova API e, quando tutto viene spostato, puoi sostituire molto facilmente il back-end.

Questo è il tipo di approccio dello scalatore. Ottieni una sicurezza prima di effettuare la prossima mossa.

    
risposta data 18.06.2014 - 23:45
fonte

Leggi altre domande sui tag