2009-06-09 14 views
15

Lo fai quando nel codice stai facendo qualcos'altro?Quando si effettua il refactoring del codice?

Quando il vostro responsabile lo approva? (Sembra che ciò non accada mai)

Immagino che questo dipenda dall'impatto delle modifiche. Se cambio il codice e non influisce su nulla al di fuori della classe, per me è a basso impatto.

Che cosa diventa un cambiamento di progettazione? Quando ha effetto su oggetti X o progetti X?

Sono solo curioso come gli altri team affrontare questo ...

+0

Interessante domanda. +1 – shahkalpesh

risposta

14
  • Nell'ambito di sviluppo originale (rosso/verde/refactoring)
  • Quando suggerito da un revisore codice
  • Quando abbiamo notato un disegno dolore punti
  • Quando si effettua un altro cambiamento, se il il refactoring è a basso impatto, quindi in genere non influisce su nessun altro file.

Se essa riguarda l'API pubblica, ho generalmente piace fare il refactoring un unico codice sorgente di commettere che non cambia il comportamento (e poi costruire nuovi comportamenti in un altro commit). Se colpisce anche altri progetti, ci deve essere consenso su di esso e vorrei avere il permesso di cambiare il loro codice per andare nello stesso commit di refactoring.

+0

Quando viene riesaminato il codice? –

+1

Prima che venga eseguito il commit. –

+0

Anche l'unione completa del codice è un fattore, ma non l'ho chiesto a riguardo? – eschneider

0

Abbiamo refactoring come spesso possibile. Avere test unitari per garantire che tutto funzioni pre e post-refactoring aiuta davvero.

0

I processi di revisione del codice spesso aiutano con questo. Se tocco un codice, viene revisionato, il revisore chiede: "perché l'hai fatto in questo modo?", Dico, "dovevo a causa di (inserire brutture qui)". Questo è un segno che il codice dovrebbe essere refactored subito dopo la revisione.

2

Il refactoring mentre si è già nel codice è talvolta più semplice, soprattutto se il proprio manager non supporta l'iniziativa, ma se si cambia solo una piccola parte si romperà la coerenza con le parti circostanti. In questi casi è meglio essere selettivi e, come hai suggerito, fare cose a basso impatto. Può anche essere utile per il refactoring delle istruzioni select/switch lunghe in funzioni e ritardare il refactoring del codice interno fino a qualche tempo dopo.

In un precedente lavoro, ero il manager, quindi ho refactored ogni volta che volevo. Al mio attuale lavoro, sono un analista quindi la maggior parte del codice non è direttamente una mia responsabilità. Quando scrivo codice, evito di influire su qualcosa che non sto scrivendo. Ho un progetto che è interamente sotto il mio controllo e che refactoring ogni volta che imparo un modo migliore per fare qualcosa.

+0

Trovare il supporto può essere difficile, vendere la pulizia a un manager o amministratore delegato non sviluppatore è difficile. Ho persino avuto discussioni con altri sviluppatori perché stanno facendo l'unione di codice. – eschneider

1

Lavoro in un sistema di grandi dimensioni, quindi cambio solo le cose che devo. È facile avere effetti collaterali negativi ai cambiamenti.

Riformerò sezioni di codice che funzionano male, non funzionano correttamente o necessitano di nuove funzionalità.

Non ho mai deciso di sistemare le cose, non avrei mai finito. se funziona, e nessuno chiede modifiche o lamenta problemi, vai avanti. la vita è troppo breve per sistemare tutto

1

Ricopro spesso il mio codice in caso di modifica dei requisiti utente o correzione di errori. Poi ci sarà la possibilità per le persone di rivedere le tue modifiche.

In caso contrario, normalmente non tocco il codice lavorabile anche se ha un cattivo odore.

0

Per guardare la nostra azienda, abbiamo deciso che la nostra prossima versione dell'applicazione è principalmente dedicata all'ottimizzazione delle prestazioni piuttosto che alle nuove funzionalità. Questo era qualcosa che sentivamo necessario e richiesto anche da alcuni clienti. Pertanto, abbiamo dedicato molto tempo a identificare i colli di bottiglia delle prestazioni nella nostra app, a revisionare il codice e a refactoring per rendere le cose più veloci.

Quindi nel nostro caso l'abbiamo fatto perché la direzione ci ha approvato per questa nuova versione, perché abbiamo mostrato loro quanto potevamo migliorare le prestazioni.

0

Refactor quando necessario:

  • quando si ha bisogno di una migliore comprensione del codice di cui si sta lavorando (accoppiamento aiuta spesso qui), esempi sono: la ridenominazione, metodo di estrazione ecc
  • quando il design attuale non consente una modifica "pulita": a questo punto si può effettivamente discutere con il proprio gestore su una base di valore (ad esempio, qual è questa nuova caratteristica che vale per il progetto)
0

Rendo sempre piccoli refatting in il mio codice So che finché ho i miei test unitari per verificare che tutto funzioni ancora correttamente in seguito, non vedo alcun danno nel farlo mentre vado. In questo modo non ottieni quel vago "bisogno di refactoring" ogni volta che ci lavori.

Ora, se è necessario un grande refactoring, è meglio pianificare per quello e mettere da parte un po 'di tempo.

0

Sembra che la maggior parte degli altri poster sia resistente a refacotringmercilessly. Ovviamente questo non è possibile se il sistema su cui stai lavorando non lo supporta attraverso ampi test unitari. Ma in generale, se riesco a vedere un'opportunità per rendere il codice più stretto senza spendere più di pochi minuti o ore al massimo, ci provo. Se non sono sicuro su cosa dovrei lavorare, cerco qualcosa da refactoring.

1

Abbiamo trovato piccoli rifacimenti migliori mentre stavamo lavorando su un po 'di codice - fare ciò che è richiesto, preferibilmente abbinato.

Per le cose più importanti, avevamo una sezione di Debito tecnico sul muro: se avevi individuato qualcosa e non avevi il tempo di affrontarlo, o ci sarebbe voluto qualche discussione da risolvere, lo avresti aggiunto a il muro e sarebbero programmati per le iterazioni future (o quando il tempo libero è spuntato).

0

I refactor quando sto correggendo un bug o aggiungendo una funzionalità e il processo di refactoring rende il codice più facile da leggere e più facile da mantenere.

0

Seguendo i principi DRY, sarò spesso un fattore scatenante per me per il refactoring.

0

Insufficiente frequenza, accumulando così debiti tecnici.

Triste, ma così.

Fai come dico, non come la squadra su cui lavoro.

2

Trovo che refactor quando si rivisita il codice (presumibilmente per aggiungere/estendere la funzionalità) più di 3 mesi dopo che è stato scritto.

Se mi ci vuole più di 2 minuti per discernere ciò che un pezzo di codice sta facendo, ti spezzo lo distingue per renderlo più immediata comprensione (o semplicemente aggiungere alcuni commenti.)

+0

Mi piace questa risposta. Stavo per suggerire quando la quantità di codice riutilizzata è inferiore a un certo livello. 3 mesi sono più che sufficienti. – monksy

2

più presto tutti i test sono eseguiti.

Problemi correlati