Come determinare se esiste un codice cancellato utile nel controllo del codice sorgente?

9

Quindi stavo leggendo questa domanda Devo rimuovere il codice non referenziato?

Alcuni consigli consistevano nell'eliminare il codice non referenziato poiché il codice si trova nel controllo del codice sorgente per riferimento nel caso in cui sia necessario in seguito.

Come organizzi questo codice cancellato in modo che una versione successiva di te (o di qualche altro programmatore) possa trovarla in seguito? Crei un ramo separato o lo tagghi nel controllo del codice sorgente in qualche modo?

Non ho mai resuscitato il codice eliminato dal controllo del codice sorgente prima, l'ho usato principalmente per tenere traccia delle modifiche sul codice che è ancora in diretta. Ho già fatto riferimento a rami prima quando hanno contenuto il lavoro sperimentale di qualcun altro, quindi forse questo è un buon modo per contrassegnare sezioni di codice interessanti che vengono cancellate nel bagagliaio?

    
posta Peter Smith 14.03.2016 - 18:38
fonte

4 risposte

6

A meno che tu non stia sperimentando in una filiale e non sei ancora sicuro di quale soluzione verrà reintegrata, di solito non fai riferimento al codice eliminato.

Potresti, durante un'occasione molto rara , scavare esplicitamente per rimuovere il codice che richiami vagamente a risolvere un problema che hai adesso . Tuttavia, il motivo più tipico in cui vedrai il codice cancellato è quando stai cercando nel backlog di capire qualcosa sul codice o comportamento di un'applicazione rispetto al suo codice o comportamento storico.

In particolare, potresti essere ...

  • fare una revisione generale del codice / comprendere un refactoring
  • cercando il commit che ha introdotto il bug X
  • soddisfare la tua curiosità / cercare il commit che ha risolto un bug
  • ri-implementare una funzione o funzionalità simili
  • comprensione del codice o dei dati che sembra come funziona in combinazione con un codice che non esiste

... ecc.

E in questi casi, non in genere resuscitare il vecchio codice. Stai solo comprendendo qualcosa che vedi adesso utilizzando il codice rimosso per il contesto o la guida.

    
risposta data 14.03.2016 - 19:26
fonte
4

Suppongo che la risposta sia: la stragrande maggioranza dei programmatori non si cura di fare riferimento al codice cancellato. Per diverse ragioni. Alcuni motivi che mi vengono in mente sono:

  • Probabilmente la cosa più importante, pura pigrizia ...

  • La maggior parte non ha mai sentito il bisogno di resuscitare del codice, quindi non ha alcuna esperienza che li motiva a rendere più facile la resurrezione del codice.

  • La maggior parte del codice eliminato viene eliminato per un motivo. Di solito, viene sostituito da un altro, migliore, funzionalmente equivalente o più potente codice. Perché qualcuno dovrebbe voler resuscitare il codice inferiore?

    Si noti che anche questo è un problema psicologico: la maggior parte dei programmatori è piuttosto orgogliosa dei risultati del proprio lavoro. Come potrebbe mai venire in mente che c'era ancora un certo valore in ciò che hanno sostituito?

  • Poiché la maggior parte del codice non viene semplicemente eliminata, ma sostituita, le interfacce che sono state modificate nella transizione forniscono informazioni sufficienti se è davvero necessario rintracciare il codice eliminato a causa di alcune regressioni introdotte dal nuovo codice.

Ma, indipendentemente da quanto più o meno validi motivi si possa mettere dietro questo disprezzo per il codice morto, penso che sia davvero solo un "non importa" da parte dei programmatori. E anche se cerchi di contrassegnare le cose cancellate in un modo o nell'altro, preparati a essere completamente ignorato con questo sforzo ...

    
risposta data 14.03.2016 - 18:56
fonte
1

Questa domanda probabilmente ricade su "Come mantieni la tracciabilità dei tuoi check-in VCS rispetto al database dei bug e ai tuoi requisiti di sistema?"

Le volte in cui le persone passano al codice di risorgere dal controllo del codice sorgente tendono ad essere quelle volte in cui scopri che qualcosa è stato involontariamente rotto e deve essere riportato indietro.

La cosa più importante in questo scenario per chi cerca un bit specifico del codice rimosso è che possono facilmente rintracciarlo esaminando il database dei requisiti e lo strumento di tracciamento dei bug; perché è probabile che stiano cercando il requisito specifico o parole che descrivono la funzionalità. È improbabile che conoscano il nome del file sorgente o la classe / funzione rimossa.

Se vuoi tenere traccia di qualche codice interessante / sperimentale che deve essere rimosso prima del rilascio, puoi semplicemente tracciarlo con alcuni biglietti "bug" lungo le linee di "Rimuovi codice inutilizzato per ..." . O magari introdurre un nuovo tipo di ticket per il sistema per Funzionalità del prototipo .

Quindi, per rispondere direttamente alla domanda, non utilizzare rami / tag nel tuo sistema VCS per tracciare il codice cancellato: usa lo strumento di tracciamento delle modifiche.

    
risposta data 14.03.2016 - 19:02
fonte
0

Il consiglio è inteso per le persone che mantengono il codice obsoleto nella codebase "nel caso in cui". Poiché il codice esisterà ancora nel controllo del codice sorgente, non dovresti temere di eliminarlo. Non organizzi veramente il codice cancellato in quanto tale, dal momento che il punto è che non è più necessario. Basta aggiungere un messaggio di commit che indica cosa è stato modificato ed eliminato nel commit. Il messaggio di commit più pertinente per il codice eliminato è il messaggio al momento dell'aggiunta iniziale del codice, non il messaggio quando è stato cancellato di nuovo.

"Il lavoro sperimentale" è davvero un altro problema. Dovresti avere un ramo separato per questo.

    
risposta data 14.03.2016 - 18:59
fonte

Leggi altre domande sui tag