Modifica: Supponiamo che rimarrò su questo progetto fino alla "fine".
Il problema
Attualmente sto lavorando a un progetto legacy interessante Java. Una riscrittura completa è al momento fuori discussione, poiché sto lavorando da solo e la funzionalità corrente desiderata era mesi fa (prima di entrare nel progetto).
È piuttosto grande e include:
- JDK 1.5
- Copertura di test essenzialmente 0%
- 7 progetti Java separati che contengono una molto build circolare
- Ant e Maven (che voglio aggiornare in Gradle)
- Un'app GUI Java Webstart
- Drools 5.5 (gestisce quasi tutte le funzionalità importanti)
- 3 server Apache Tomcat (con Apache Axis, che è stato aggiornato l'ultima volta nel 2006)
- e molte altre librerie deprecate che ... fanno cose
L'ho fatto compilare e girare correttamente in un nuovo ambiente di sviluppo, e ho aggiornato JDK a partire da 1.5 e ho iniziato a usare 1.6 / 1.7 / 1.8 dove posso. Ho anche aggiornato Drools a 5.6. Ho appena ottenuto il progetto a un punto in cui è possibile apportare modifiche e verificarlo in modo un po 'sane mentre lo si esegue in un ambiente non deprecato. Tuttavia, ci sono molte aree del codice in cui pezzi di grandi dimensioni sono stati copiati negli altri progetti e da allora sono stati mantenuti in modo diverso. Sono in gran parte insicuro di cosa fa qualsiasi cosa - al di fuori del "flusso principale".
Che cosa @! # $? mi sono cacciato?
Quello che voglio , è quello di refactoring questa cosa in un senso che ha un senso, ma non mi prende troppo a lungo. Stavo pensando di rippare tutti i tipi e qualsiasi funzionalità la stiano facendo circolare in un progetto "SharedJunk" separato?
Tuttavia, ciò di cui ho bisogno , è quello di ottenere nuove funzionalità, ed è stato chiesto ieri.
Semplicemente sbatto la faccia per sfornare di più la stessa qualità di lavoro che ha portato questo progetto in questo stato di morte quasi impossibile da impedire? O faccio refactoring? C'è una quantità infinita di pulizia da fare.
Il mio capo è molto paziente e vuole che questo "sia fatto nel modo giusto", tuttavia, sta combattendo le pressioni di altre aree dell'azienda e sento che potrebbe non resistere per sempre.
Le opzioni
- Refactor per sempre
- Rifattore il minimo indispensabile
- Colpisci la mia faccia nel nuovo codice
- Cry
Qualunque consiglio generale su cosa fare in questo tipo di progetto sarebbe molto apprezzato. Attualmente sto rileggendo il Working Effectively With Legacy Code e il Refactoring to Patterns. Posso chiarire questo, ma non sono sicuro di cosa aggiungere.
Grazie.