2009-03-17 5 views

risposta

3

In generale, ho trovato che la riscrittura del codice tende a essere un problema (è costoso, richiede molto tempo e comporta una fase di scoperta che rende il primo sistema un aspetto migliore).

Detto questo, qui ci sono alcune domande da fare:

  1. Would nucleo refactoring sufficiente? Saprete dal valutare il sistema se i problemi centrali sono più profondi del codice. Se i problemi riguardano il codice base (piuttosto che la tecnologia stessa), preferisco il refactoring.

  2. In che misura è verificabile l'attuale sistema?La testabilità è molto importante per estendere la durata di servizio di qualsiasi modulo di sistema poiché il codice verificabile si presta generalmente più facilmente all'estensione e alla manutenibilità. Questo si riferisce anche al # 1.

  3. Infine, il valore fornito da una riscrittura giustifica lo sforzo. Questa è una domanda di lavoro, certamente, ma che lo sviluppatore può e dovrebbe contribuire a fare.

Nella maggior parte dei casi che ho incontrato, la risposta era no.

+0

Attualmente il tuo primo punto dovrebbe essere la domanda più grande che ho. Riscrivere il nucleo per aumentare la testabilità sarebbe, a mio avviso, un lungo passo per risolvere molti dei nostri problemi. Grazie per l'input – lomaxx

+0

accetterò questa risposta perché la risposta di Ken è la preferenza della community, ma vorrei che entrambi fossero bloccati in cima. – lomaxx

8

Si consiglia di leggere Things You Should Never Do, Part I. Fa un caso forte per non riqualificarsi.

denaro citazione:

E 'importante ricordare che quando si inizia da zero non c'è assolutamente alcuna ragione di credere che si sta per fare un lavoro migliore di quello che ha fatto la prima volta. Prima di tutto, probabilmente non hai nemmeno lo stesso team di programmazione che ha funzionato sulla prima versione, quindi non hai "più esperienza". Farai di nuovo la maggior parte dei vecchi errori e introdurrai alcuni nuovi problemi che non erano nella versione originale.

Forse dovresti chiederti se conosci il sistema abbastanza bene da risolvere i problemi senza riscriverlo. Se non lo fai, potrebbe essere sicuro di dire che non conosci il sistema abbastanza bene da ricostruirlo da zero.

+0

Questo è un buon collegamento, grazie. –

+0

Buon consiglio e ottimo collegamento. Grazie – lomaxx

0

nel seguente ordine:

  • fa fare il lavoro correttamente?
  • è veloce?
  • è facile da mantenere?
  • è facile da estendere?
1

Infine, si desidera ottenere qualcosa ogni volta che si riscrive un sistema da zero. Dovresti chiederti cosa vuoi ottenere? Vuoi:

  • ridurre il rischio di un sistema costruito con vecchie tecnologie
  • ridurre i costi: troppo costoso da mantenere
  • ?

Si potrebbe fare un'analisi di pareggio per vedere quando il nuovo sistema inizia a pagare. Secondo me dovresti essere in grado di ridurre la riscrittura del sistema a costi ed essere in grado di vedere che uno nuovo costa meno del vecchio.

1
  1. Per quanto tempo non sarà possibile consegnare? Quanto tempo Con quale fattore hai sottovalutato i progetti precedenti? Quanto tempo ti puoi permettere nel caso peggiore?

  2. Quanta manodopera attualmente entra in mantenendo il/i sistema/i esistente/i? Avete questa manodopera disponibile in aggiunta alle persone che sviluppano il nuovo sistema?

  3. Come si può essere sicuri di non ricreare lo stesso sistema con gli stessi problemi? Evitare i difetti evidenti dell'architettura di solito non è sufficiente.

  4. Sarai in grado di competere/sopravvivere se non hai risorse per migliorare il sistema attuale?


Anche se "Refactor e riparazione" si intende, nel lungo periodo, sostituendo la maggior parte del sistema esistente, significa mettere tutte le risorse nel sistema ONE, anziché due.

1

Suggerisco di aver bisogno di un contesto per la discussione, e il migliore che conosco si trova nel libro "Refactoring" di Martin Fowler. Per me la domanda è davvero "questa refactable è questa?"

La prima linea guida specifica sarebbe "È stato scritto usando buoni principi di progettazione OO?" In caso contrario, di solito è necessario metterlo in supporto vitale e/o ricominciare da capo. Se lo è, allora il libro fornirà un sacco di aiuto; e nella mia esperienza c'è una buona ragione per sperare.

Problemi correlati