Attualmente mi trovo di fronte a una situazione in cui non sono abbastanza sicuro di come procedere nel modo migliore.
Sfondo
Sto pianificando un nuovo processo di importazione dei dati, che importerà il personale e il salario informazioni da un file di testo prodotto da un sistema diverso. Noi già avere un processo di importazione per i dati in questione, ma il formato dell'importazione il file cambierà completamente. Pertanto, mentre i dati letti rimangono uguali (nomi dei dipendenti, pagamento voti, pagamenti del salario passato ...), si esprime in modo molto diverso nel nuovo formato di file (formato diverso, campi diversi, diversa codifica dei dati, rappresentazione diversa di casi speciali come il congedo non retribuito o retroattivo cambi di stipendio).
Come riutilizzare?
Ora vorrei riutilizzare il più possibile il codice di importazione esistente. Il il problema è che la maggior parte delle classi e dei metodi esistenti hanno parti che potrebbero essere riutilizzato (principalmente le parti che si occupano di scrivere i dati nel nostro database, che non è cambiato), ma hanno anche molti dettagli sulla vecchia importazione formattare con hardcoded, quindi il riutilizzo diretto è impossibile.
Ora vedo due alternative:
- prova a rifattorizzare e rielaborare il codice esistente per essere più indipendente del particolare formato di importazione, quindi può gestire sia vecchi che nuovi formato
- seleziona le parti del vecchio codice che si applica ancora (estrarli separare metodi o simili) e riutilizzare
Il mio problema
Sto trovando difficile giudicare quale sia l'approccio migliore. Da un lato, io credo che il riutilizzo sia importante, e 1) sembra permettermi di riutilizzare di più. Sul Dall'altro lato, guardando attraverso il codice ho almeno una sensazione istintiva Il 30% -50% del codice non viene più applicato, quindi temo che 1) potrebbe essere molto lavori di refactoring, e alla fine mi piacerebbe riutilizzare solo più che con approccio 2).
Il problema è (sento) che dovrò decidere in anticipo, perché è così difficile da cambiare approccio una volta iniziato: se inizio con 1) e dopo alcuni giorni di refactoring trovo che la piccola "carne" reale rimane nel funzioni generalizzate, devo buttar via tutti i refactoring e iniziare di nuovo con un codice separato che chiama il vecchio codice quando necessario.
Quindi, come risolvete i nuovi problemi quando avete un codice che è molto simile, ma differisce in molti dettagli per ciò che vi serve? Come giudichi quale approccio al riutilizzo del codice ha più senso?