La manutenzione del codice è in genere un progetto speciale o è considerata parte del lavoro quotidiano?

6

In precedenza, ho chiesto di scoprire quali strumenti sono comunemente usati per monitorare metodi e basi di codice, per scoprire se i metodi sono diventati troppo lunghi .

La maggior parte delle risposte suggerivano che, oltre alla manutenzione del metodo attualmente in fase di modifica, i programmatori non tenessero in generale in considerazione il resto della base di codice.

Quindi ho pensato di porre la domanda in generale:

La manutenzione del codice, in generale, è considerata parte del tuo lavoro quotidiano? Trovi che stai spendendo almeno un po 'del tuo tempo per ripulire, refactoring, riscrivere il codice nel codice base, per migliorarlo, come parte del tuo altro lavoro assegnato? È previsto da te / ti aspetti dai tuoi compagni di squadra? Oppure è più comune scoprire che la pulizia, il refactoring e la manutenzione generale sul codebase nel suo complesso, si verificano a raffica (ad esempio, principalmente come parte delle revisioni del codice o come parte di refactoring / ripulitura di progetti)?

    
posta blueberryfields 03.02.2011 - 23:11
fonte

6 risposte

13

Se possiedi un codice legacy, penso che sia spesso pragmatico ripulire o codice refactoring quando è necessario immergersi in quel codice, ad es. per correggere un bug o aggiungere una nuova funzionalità. Altrimenti rischi di sprecare tempo o di rompere il codice che non sarebbe mai stato mantenuto in ogni caso.

Di solito non dedico del tempo a ripulire il codice per il gusto, ma piuttosto mentre si lavora su un bug / funzione una buona regola è sempre quella di lasciare il codebase in un modo migliore di quello che hai trovato. Ciò che è in termini di factoring e copertura dei test.

Quando stai scrivendo un nuovo codice dovresti cercare di mantenerlo pronto fin dall'inizio.

    
risposta data 03.02.2011 - 23:15
fonte
3

Dipende. All'inizio del ciclo di vita di un progetto, sono letteralmente in tutto il codice, ripulendo le cose ovunque io le veda. Mentre tentiamo di stabilizzarci per il rilascio, ne faccio sempre meno. La prossima volta che il prodotto si trova in un ciclo di sviluppo, eseguirò un altro (più piccolo) giro di pulizia, quindi stabilizzerò per il rilascio. Col passare del tempo, provo non a pulire, tranne dove sto aggiungendo una nuova funzionalità o correggendo un bug, semplicemente a causa del rischio di apportare questi tipi di modifiche. Ho un buon numero di test unitari, ma comunque, c'è un rischio ogni volta che esegui "cleanup" su un'app in produzione.

    
risposta data 03.02.2011 - 23:21
fonte
3

Nel mio progetto attuale, fa parte del mio lavoro quotidiano. Ho compiti di refactoring programmati abbastanza regolarmente come parte del normale lavoro di sviluppo. Io tendo a concentrarmi su alcune aree specifiche e faccio refactoring su larga scala in blocchi di un giorno, distribuiti su diversi mesi. In media, trascorro da metà a un giorno il refactoring per ogni due settimane di iterazione.

Questo è (sorpresa a sorpresa) un progetto legacy abbastanza ampio. Era stato esternalizzato a diversi subappaltatori e 2 anni fa era ai margini dell'abisso, pieno di bug, molto inaffidabile, con utenti molto infelici (giustamente). È stato allora che il nostro team ha preso il comando e ha iniziato l'operazione di salvataggio (sono entrato nel team circa un anno dopo). Ormai la situazione è decisamente migliore, ma c'è ancora molta strada da fare.

Fortunatamente, il nostro management capisce la situazione e sa che dobbiamo ripagare un enorme debito tecnico accumulato, quindi ci permettono di fare il normale refactoring e riconoscere il nostro impegno anche quando non comporta cambiamenti tangibili e visibili per il utenti. Sanno che questa è un'app business critical e che devono investire nella sua sostenibilità a lungo termine, invece di cercare di risparmiare sui costi a breve termine (ci hanno provato, visto i risultati e imparato la lezione). In questo senso, questo è un posto di lavoro onirico. In tutti i precedenti progetti legacy in cui ho lavorato, lo stato del codice era più o meno lo stesso, ma la gestione era lontana da questo livello di comprensione.

    
risposta data 03.02.2011 - 23:25
fonte
1

Segui la regola del boy scout, lascia tutto il codice che tocchi in condizioni migliori di quando sei arrivato. Questo dovrebbe essere parte delle attività quotidiane di codifica. Puoi anche eseguire metriche sulla base di codici utilizzando vari strumenti. Ma il metodo migliore è renderlo parte dell'attività quotidiana.

    
risposta data 03.02.2011 - 23:24
fonte
1

Certo che lo è. Chiunque dica diversamente funziona in un universo alternativo.

    
risposta data 04.02.2011 - 01:13
fonte
0

Fa parte del lavoro quotidiano, ma molte aziende più piccole non gradiranno ammetterlo. C'è tutto sulle nuove funzionalità, sull'innovazione, sulle cose per cui è possibile caricare un client.

È piuttosto difficile caricare i client per la manutenzione della propria base di codice quando non l'hanno richiesto e non ne traggono alcun vantaggio tangibile.

    
risposta data 04.02.2011 - 03:43
fonte

Leggi altre domande sui tag