Quanto spesso si fa il commit del codice quando non funziona nulla [duplicato]

1

Sto cercando di spiegare i vantaggi del controllo di versione a un collega (neolaureato con poca esperienza software), ma non pensa che sia utile nel suo caso.

Ho spiegato che ti impegni ogni volta che scrivi una nuova funzione, correggi un bug o in genere aggiungi qualcosa di utile al tuo codice. Le cose su cui sta lavorando hanno iniziato a non funzionare, e tutte le sue modifiche sono solo tentativi di risolvere problemi (alcuni dei quali sono limitazioni hardware)

C'è una buona regola generale per quanto spesso impegnarsi quando il codice non funziona? Normalmente, cerco di non commettere troppe cose che non funzionano, proprio quando smetto di funzionare per un giorno, ma se hai lunghi periodi di codice che non funzionano, quante volte dovresti commetterle?

    
posta Mike159 15.02.2017 - 16:39
fonte

3 risposte

4

Penso che una buona linea guida per il tuo collega potrebbe essere:

How much of this would you be willing to re-write from scratch if your workstation suddenly exploded (and you lost all work since your last commit)?

Naturalmente, potrebbe dipendere da quanto male "non funzioni". Se non verrà compilato, magari chiedergli di evitare di commetterlo fino a quando non sarà in grado di risolvere gli errori del compilatore.

    
risposta data 15.02.2017 - 16:49
fonte
2

Che sistema di controllo della versione stai usando? I popolari sistemi di controllo delle versioni distribuite come Git o Mercurial distinguono tra commit e push, mentre SVN (Subversion) no.

La parte importante è ciò che i commit finiscono nel repository condiviso. Idealmente, nessun commit che interrompe la compilazione dovrebbe mai essere spinto. E l'applicazione dovrebbe anche funzionare, altrimenti solo spingendoti a fermare altri sviluppatori. E, idealmente, dovrebbe passare tutto il test, soprattutto quelli che erano prima.

Prima di spingere, in molti DVCS come Git, puoi fare tutto ciò che vuoi, ma cerco lo stesso di sopra. Ma puoi commettere commit errati e poi modificarli in seguito con uno o più commit. A volte faccio commettere errori e li spingo su un server separato, se devo continuare a lavorare su un altro computer. Quindi modifico il codice e, una volta fatto, annullo il commit interrotto e faccio un bel commit.

Puoi anche utilizzare diversi rami, come i rami delle caratteristiche, in modo che gli sviluppatori possano lavorare su diverse parti del sistema e spingere senza disturbare altri sviluppatori. Poi, quando la funzione è completata, tutto si compila, tutti i test passano, puoi unire i commit in un ramo principale.

Ma la soluzione migliore per non avere lunghi periodi di codice non funziona è non entrare mai nella situazione. Raggiungi una situazione in cui tutto funziona. Da questa situazione di lavoro, prova a suddividere il lavoro in modifiche incrementali più piccole, in cui ogni modifica si traduce in una nuova situazione in cui tutto funziona ancora.

    
risposta data 15.02.2017 - 16:51
fonte
0

Da una prospettiva di controllo della versione è inutile controllare le "versioni" che non funzionano. Una versione dovrebbe essere uno stato del tuo prodotto funzionante. Ovviamente spetta a te abusare del tuo sistema VC come mezzo per fare il backup del tuo lavoro, ma io guarderei a quell'informazione.

Alcuni vantaggi:

  • Ti permette di tracciare le modifiche incrementali fatte nel passato (da cambia numero). Ciò è particolarmente utile quando non sei l'unico a lavorare sul prodotto.
  • Ti consente di "pin" o "etichettare" più stati di il tuo prodotto che puoi in seguito tornare facilmente se necessario, per istanza per riprodurre un problema segnalato da un client che sta usando a versione particolare.
  • Porta trasparenza al team di sviluppo.

È difficile creare un caso valido per VC quando c'è una sola persona che gestisce il codice. Gli script che creano file zip e creano sandbox da loro fanno molto. In un ambiente multi-sviluppatore, tuttavia, non esiste un'alternativa seria.

    
risposta data 15.02.2017 - 19:30
fonte

Leggi altre domande sui tag