Diciamo che hai un progetto che è scritto male, contiene molti odori di codice, wtfs, ecc. Inoltre, la sua struttura di codice è così complicata che è estremamente difficile aggiungere nuove funzionalità ad esso. D'altra parte, il progetto funziona come dovrebbe.Refactoring di un progetto di lavoro
Si vuole rifattorizzare il progetto, magari spostarlo in un nuovo framework, come si affronterà questo problema? Proverai a crearne uno nuovo partendo da zero o userai alcune tecniche (specificare) per convertire il progetto di lavoro in uno nuovo?
vorrei chiarire la questione un po 'in quanto v'è una confusione che cosa intendo quando dice "refactoring".
Darò un esempio di un'auto, pensandoci come un progetto software. Diciamo che hai costruito la tua auto. La sua costruzione è piuttosto strana: il motore è capovolto, quindi tutti i tubi sono disposti in modo diverso, i cavi elettrici sono aggrovigliati e nessuno ha un'idea da dove iniziare o finire, ecc.
Tuttavia, tutto funziona bene: tu può facilmente guidarlo per fare acquisti, lavorare, ecc. Tuttavia, il suo consumo di carburante è un po 'troppo alto. Inoltre, se mai volessi installare nuovi fari, sarebbe un disastro con tutto il casino nei fili.
Non ti puoi permettere di acquistarne uno nuovo, quindi devi rifattorizzare l'auto in qualche modo: cambia la posizione dei motori in posizione normale, fai i fili in ordine, ecc. Hai bisogno di fare questo, perché prima o poi dovrai cambiare motore , fari, installa il nuovo stereo ecc. D'altra parte, hai ancora bisogno di qualcosa che ti spinga a lavorare ogni mattina, quindi devi assicurarti di non rovinare tutto.
Ora torniamo al progetto. Come giudicheresti il progetto come complicato come l'auto sopra, senza disturbare la sua funzione e il suo scopo principale.
Vorrei anche fare di questo un wiki della comunità. Si prega di modificare.
Finora le principali tendenze sono:
- non scrivo uno nuovo da zero prova
- Unità l'inferno fuori di esso, quindi avviare il refactoring piccoli pezzi
- Leggi Working Effectively with Legacy Code (Robert C Martin)
vicini:
- Working Effectively with Legacy Code (Robert C Martin)
- http://www.joelonsoftware.com/articles/fog0000000069.html
- Refactor the low-hanging fruit.
Grazie per l'aggiornamento! Un'altra domanda che vorrei chiedere: quanto è importante non rompere la macchina? Quanti bug puoi introdurre e correggere prima che ti venga detto di smettere di fare cambiamenti? –
beh, ne hai bisogno per funzionare come lo stai guidando il giorno successivo. Quindi dovresti sempre mantenerlo il più buono possibile. –