Codice di lavoro del refattore per il riutilizzo o la duplicazione?

3

Ho sempre evitato di duplicare il codice indipendentemente dalla circostanza. Ad esempio, se ho un pezzo funzionante di funzionalità che deve essere riutilizzato da entità diverse, ho sempre il refactoring per rendere disponibile questa funzionalità. In nessun caso dovrei duplicare il codice. Sono probabilmente un po 'rigido quando si tratta di questo, ma in realtà non mi piace duplicare il codice.

Al momento ho avuto un leggero disaccordo con il nostro Team Lead che ha suggerito che invece di refactoring, dovrei copiare tutta la parte di funzionalità richiesta in una classe diversa e quindi decidere il miglior refactoring in un secondo momento. Questo è anche dopo aver confermato che i miei precedenti sforzi di refactoring non hanno infranto nessuno dei test unitari.

Ho avuto questa conversazione anche oggi con il mio precedente manager e il suo mentore, che si sono entrambi schierati con il mio caposquadra. La loro argomentazione è che l'indebitamento tecnico è OK, e quasi sempre preferibile, specialmente se si stanno imbattendo in vincoli temporali, cosa che capisco. La mia contro-discussione era sì, non vogliamo saltare le scadenze ma bisogna sempre considerare il costo del refactoring e questo di solito dovrebbe essere il primo istinto, specialmente se stiamo semplicemente spostando le funzionalità in una nuova posizione che la rende accessibile a tutti. Il corretto test dell'unità può anche garantire che gli sforzi di refactoring non interrompano la funzionalità esistente. Inoltre, non è sempre meglio pagare il debito ora piuttosto che dopo? Posso solo immaginare cosa comporterà questo compito se tutti i membri del team duplicassero semplicemente il codice.

È sufficiente dire che dovevamo accettare di non essere d'accordo. Nel suo libro intitolato Clean Code , Robert Martins enfatizza il refactoring continuo durante lo sviluppo, quindi è stato sorpreso dalla risposta del mio precedente manager.

Che cosa ne pensi?

    
posta e28Makaveli 06.07.2013 - 03:31
fonte

3 risposte

7

Se la tua squadra è in testa, il precedente manager e mentore stanno tutti dicendo che non hai il tempo di refactor ora a causa dei limiti di tempo, quindi non hai il tempo di refactarlo ora . Notalo, metti un TODO lì dentro e rifattalo più tardi.

Non sei ritenuto responsabile per la data di consegna. Loro sono. Probabilmente non sei a conoscenza di cosa sta succedendo con l'immagine più grande e non devi spiegare al CEO / consiglio perché il progetto è in ritardo di due settimane. Dicendo "Volevamo avere una base di codice più pulita ora, invece che tra un mese, quindi stiamo ritardando il progetto, e ora il tuo lavoro è sulla linea" non è una buona scusa.

In un mondo ideale sarai sempre in grado di refactoring e non incorrere in debito tecnico. È sempre la soluzione preferita, nessuno lo sta discutendo. Anch'io odio il codice duplicato - Sono attualmente nella situazione in cui ho ereditato un sacco di codice copia e incolla e sarà un incubo da sistemare, ma l'azienda ha fatto quello che dovevano fare per realizzare il progetto e ora possono permettersi di dedicare il tempo in più per ripulire il codice.

    
risposta data 06.07.2013 - 04:04
fonte
3

Sì, incorrere in debiti tecnici è cattivo. Sì, dovresti sempre refactoring mentre sviluppi.

In un mondo ideale.

Sfortunatamente, non viviamo in un mondo ideale. A volte, dobbiamo fare cose di cui non siamo felici. Sono abbastanza sicuro che il tuo team leader è consapevole del fatto che non prendere il tempo ora significherà più lavoro in futuro, ma ha dovuto prendere una decisione. Ci sono molte ragioni per cui sarebbe così.

Idealmente (quella parola di nuovo), in questa situazione, ci dovrebbe essere una dedica per un po 'di tempo al refactor dopo la scadenza prima di passare a un nuovo lavoro. Se ciò non accade, allora c'è sicuramente qualche odore di gestione del codice - ma il tuo disaccordo con la pratica probabilmente non avrà alcun effetto, e qualsiasi tentativo di forzare il problema renderà la tua posizione più scomoda.

Dato che abbiamo solo il tuo lato della discussione da seguire, è difficile rispondere in modo equilibrato - ad esempio, non si dice veramente quanto sia grande questo bit di funzionalità. Inoltre, non dici quanto spesso si verifica questa situazione.

In definitiva, se non ti piacciono le pratiche della tua attuale organizzazione, ci sono molti altri là fuori che ti starebbero meglio.

    
risposta data 06.07.2013 - 11:40
fonte
1

Il tuo manager sta per sacrificare la manutenibilità del codice perché il progetto sta per scadere. A breve termine è molto più veloce duplicare il codice ("copia e incolla ereditarietà") e aggiungere un "da fare" piuttosto che un refactoring ora.

Dalla mia esperienza non avrai mai il tempo di fare il refactoring più tardi: - (.

Puoi dare alla gestione una stima del tempo in più di tempo necessario per eseguire il refactoring e se continuano a dire di no, devi fare ciò che vogliono.

Se scrivi un breve messaggio di posta elettronica che riassume la decisione di gestione politica in modo da essere protetto da un possibile gioco di incitamento successivo a causa della "cattiva qualità del codice con così tanti codice duplicato ".

    
risposta data 06.07.2013 - 07:39
fonte

Leggi altre domande sui tag