Vale la pena impegnarsi esclusivamente per risolvere errori di battitura non critici?


67

Se trovo un errore di battitura non critico nel codice (diciamo, un apostrofo errato in un'istruzione di stampa (errore)), vale la pena impegnarsi per risolvere l'errore, o dovrebbe essere semplicemente lasciato solo?

In particolare, sono curioso di valutare il gumming-up del registro di commit rispetto al valore di risoluzione di questi errori di battitura non critici. Sono propenso a risolverli. Sono pedante?


40
Se un banale impegno risolve qualcosa, è necessario investire in un VCS migliore, in migliori strumenti di filtraggio dei registri o in migliori pratiche per notare diverse gravità della correzione.
Rex Kerr,

@ root45 Anche se dai un'occhiata ai risultati, sono tutti un tipo di grammatica diverso da quello che questa domanda sta ponendo.
Izkata,

Risposte:


130

La mia sensazione personale è che il miglioramento della qualità valga il piccolo inconveniente di una voce aggiuntiva del registro di commit, anche per piccoli miglioramenti. Dopotutto, i piccoli miglioramenti contano molto quando si tiene conto dell'effetto finestra rotta .

Potresti voler aggiungere un prefisso con un TRIVIAL:tag o contrassegnarlo come banale se il tuo VCS lo supporta.


72
Voglio solo aggiungere a questo è che preferirei che cose del genere venissero commesse separatamente piuttosto che raggruppate con qualcos'altro. Il problema con il grumo è che troppo rumore può distrarre un revisore del codice dalle modifiche rilevanti. +1
Andy,

9
+1 per menzionare l'effetto finestra rotta. Le piccole cose contano. Se tutto è veramente pulito, la gente ci penserà due volte prima di commettere codice scritto o non testato con noncuranza.
Roy Tinker,

25
Inoltre, se lo si inserisce in una funzione, quindi ricoprire la funzione perda la modifica. Commetti una cosa alla volta.
ctrl-alt-delor,

4
Sarei davvero interessato a quali VCS consentono di contrassegnare il commento come banale. Ho lavorato con SVN, Hg e Git e in entrambi non ho notato nulla di simile.
Xion,

3
@Andy che il rumore non è la parte peggiore ... se in seguito qualcuno decide, ad esempio, di ripristinare questo commit perché non desidera quella funzione, all'improvviso perdi anche un piccolo miglioramento che faceva parte dei commit.
rFactor

49

Non sei pedante, ed è meglio risolverli individualmente. Più una modifica è atomica, meglio è: non si desidera confondere una correzione di bug con 500 modifiche di commento / errore di battitura.


9
+1 Ogni revisione dovrebbe riguardare solo una correzione specifica. Diventa NIGHTMARE eseguire il backport delle correzioni se ogni revisione ha anche un mucchio di errori di battitura casuali fissati tra cambiamenti reali.
Concedi il

28

Nel caso generale: Sì

Ne vale sempre la pena per aumentare la manutenibilità del tuo software.

Provaci.

Se stai per inviare un rilascio ...

... e se non sei il capo squadra, verifica con lui / lei .


Per quanto riguarda il contenuto del registro di commit ...

Concordo con gli altri sul fatto che dovresti almeno scrivere qualcosa che lo distingua dai commit relativi a "feature", se si tratta solo di correggere un refuso isolato.

Una pratica comune è avere alcune attività che non muoiono mai nel tracker dei problemi per tenere traccia delle modifiche senza tempo e senza fine. Ad esempio, non è raro avere un'attività per:

  • grandi pulizie automatizzate innocue (spazzate di spazi bianchi),
  • battute di caccia alla grammatica e agli errori di battitura,
  • costruire modifiche al sistema,
  • eccetera...

Basta essere cauti sul fatto che questi non vengono utilizzati come ID attività da buttare via per qualsiasi cosa quando le persone diventano pigre sulla creazione di biglietti correttamente documentati. Soprattutto se rifiuti i commit che non sono collegati a un ID (il che è una buona cosa, ma grandi compiti come questi saranno ancora più attraenti per gli sviluppatori pigri).


7
Verifica con il tuo caposquadra una correzione di battitura? Se fossi il caposquadra che è stressato per la prossima uscita, non vorrei essere disturbato da tali banalità.
Joh

2
@Joh: non è che potresti necessariamente interrompere la build, ma potrebbero esserci altri lavori di build o uno potrebbe essere già taggato e pronto per l'uso e i tuoi controlli di audit (a seconda del tuo settore) potrebbero costringerti a legare questo commit innocuo a compiti e requisiti, quindi se viene dal nulla può essere solo un po 'di mal di testa; che potresti facilmente salvare per pochi giorni dopo l'uscita dell'uscita. Ma in generale, sono d'accordo con te e direi persino che un'azienda che gestisce in quel modo sta sbagliando. Ma non sei tu quello che lo risolverà, quindi eseguilo da loro se non sei più anziano.
Haylem,

2
@Joh: fondamentalmente, se il mio team leader vede improvvisamente una nuova build saltare sul sistema di build quando sta per iniziare una nuova build (o già avviata), allora posso assicurarti che i suoi livelli di stress aumenteranno usando questo approccio pure ...
haylem l'

7

I Typos dovrebbero essere aggiunti come commit. La correzione di parole errate o errori grammaticali aumenterà la leggibilità del tuo codice.

L'uso di un messaggio di commit come "Typo fisso" o "Typo fisso in file.c" ti aiuterà a distinguere questi commit da altri commit di codice importanti.


7

Sì, dovresti assolutamente farlo, in particolare all'inizio di un progetto.

Perché? Due punti:

  1. Probabilmente non saprai se un refuso è "critico" o no fino a quando non è troppo tardi. Alcune correzioni probabilmente non vengono riparate perché tutti pensano che non sarà un grosso problema. Fino a quando non lo è.

  2. Riparare un refuso all'inizio e deliberatamente sarà molto più facile che risolverlo dopo che sono state fatte diverse centinaia di righe di chiamate di codice / funzione. Ancora una volta, gli hack temporanei possono diventare semipermanenti sorprendentemente rapidamente. Questo è il motivo per cui ho a che fare con oggetti che hanno entrambi i metodi "CollapseAll" E "ColapseAll".


2
Sì - tra tutte le risposte corrette, questa mi piace di più per aver menzionato che dipende dal "quando".
Wonko the Sane,

4

Per gli errori grammaticali che possono essere visualizzati da un utente finale, quindi sì, vale sicuramente la pena di eseguire il commit in quanto è del tutto possibile che un utente o un QA possa presentarsi e segnalare l'errore e che debba essere monitorato. Se è già stato risolto, potrebbe accelerare il tempo necessario per risolvere il problema.

Se si tratta di un errore grammaticale nei commenti intorno al codice, tuttavia, non farei nulla al riguardo a meno che non faccia parte delle modifiche al codice effettivo e nel qual caso stai aggiornando la documentazione del codice.


3

Se sei preoccupato di gommare il registro di commit, stai facendo qualcos'altro di sbagliato. :-) Gli impegni frequenti sono una buona cosa! Commetto sempre correzioni di errore di battitura. Inseriscili nel codebase al più presto e velocizza il ciclo di sviluppo!


2
I commit typo fixes all the timeIMO è preoccupante, cerchi di trovare programmatori con un inglese migliore?
Lie Ryan,

Prendi ciò che puoi ottenere in questi giorni. Trovare programmatori in grado di scrivere codice praticabile è un problema serio!
Brian Knoblauch,

2

Io voto sì. Controllali. Ho lavorato per un'azienda che odiava le persone che effettuavano il check-in. Intendo quasi tutto. Le revisioni del codice erano estese e quindi se hai verificato una modifica che ha appena risolto un errore di battitura, ti sei lamentato. Puoi immaginare lo stato del codice. In realtà il codice non era terribile, ma trasudava come melassa piuttosto che scorreva come il vino.


0

Il tuo processo di gestione delle modifiche lo consente?

Nel mio ambiente, ogni commit che eseguo deve essere ricollegato a una richiesta di modifica che è stata richiesta dagli utenti aziendali o a una modifica obbligatoria a livello di sistema, completa dei corrispondenti processi di test dell'utente finale. Un errore di battitura come quello che stai descrivendo probabilmente non verrebbe registrato come uno di questi (ho trovato errori di battitura ed errori grammaticali in una delle mie app che esistevano da oltre 4 anni senza che nessuno se ne accorgesse), quindi se / quando arrivavano gli auditor chiamare avrei avuto un momento molto difficile spiegarmi.

Vorrei salvare un cambiamento come lo stai descrivendo (e in realtà ne ho uno, in realtà - un nome di metodo è scritto in modo errato e l'ho appena scoperto) per un momento in cui ho un cambiamento "reale" che deve essere fatto anche e messo "riparati vari errori di battitura" nel registro.


+1 In alcuni ambienti questo è vero. Per favore, non sottovalutare solo perché questo non è vero dove lavori.
MarkJ,

-1 il tuo processo di gestione del cambiamento sembra fare schifo alla grande . Comprenderei (e addirittura preferirei ) che ogni commit deve essere correlato alla richiesta di modifica - questa parte del processo sembra a posto. Ma OMG sembra che le richieste avviate dallo sviluppatore (come refactoring questo / correggi errori di battitura in quello ) siano proibite e ciò solleva una grande bandiera rossa . In un certo senso si presume che gli utenti / i revisori dei conti conoscano sempre meglio degli sviluppatori - se ciò fosse mai vicino alla verità, quindi scriverebbero il codice da soli
moscerino

Se lo sviluppatore può convincere le persone che approvano andare avanti con le modifiche che vale la pena apportare, allora possono andare avanti. Ma se trovo un semplice errore di battitura nel nome di un metodo, o trovo un codice che è stato copiato / incollato che dovrebbe essere convertito in un metodo, non posso apportare la modifica senza autorizzazione. Non si tratta semplicemente di "fare la cosa giusta con il codice": i test di accettazione devono essere eseguiti e gli sviluppatori non sono in grado di dire agli uomini d'affari "Ho apportato questa modifica, non noterai mai cosa sì, ma devi passare attraverso un ciclo di prova ".
alroc,

@alroc che "if-can-convinc" nasconde un processo controproducente sotto una superficie dall'aspetto ragionevole. Il requisito di convincere gli affari / l'audit su grandi cambiamenti, su punti di controllo / rilasci di pietre miliari concordati ecc. Ha un buon senso, OK. Trascorrere alcune ore / giorni per giustificare uno sforzo che richiede una settimana di sviluppo e QA, è noioso ma giusto, OK. Ma forzarlo per ogni singola correzione ortografica o metodo di estrazione ... dammi una pausa - questo non è altro che il controllo inserito insensatamente nella fase sbagliata nel momento sbagliato
moscerino

Vorrei provare a spiegarlo di nuovo. Se riesco a correggere un refuso o estrarre un metodo mentre sto lavorando su un'altra modifica approvata, posso inserirlo senza dover vendere nessuno. Ma non posso apportare una modifica che non sia visibile all'utente e che non abbia un impatto positivo diretto sul business / sugli utenti senza vendere i poteri che lo riguardano prima.
alroc,

-1

Usa DVCS per modificare la cronologia

Se sei preoccupato per una cronologia di commit pulita, considera di fare il tuo lavoro principale nei rami delle caratteristiche . Se ti capita di lavorare con un VCS distribuito , puoi facilmente modificare la cronologia di commit prima di inviarla al ramo principale. Se sei su SVN, prova Git: può interagire in modo bidirezionale con Subversion e puoi anche modificare la cronologia prima di impegnarti effettivamente in Subversion.

In caso contrario, mantenere il buon senso

Se non si desidera o non è possibile modificare la cronologia del commit, non esiste alcun motivo funzionale per eseguire un commit anticipato o atomico per un errore di battitura minore che non influisce sui test automatici o sulla compilazione . In questi casi, a mio avviso, mantenere pulita la cronologia dei commit dovrebbe essere più importante che eseguire commit davvero atomici. Mischiare una o due correzioni di errori di battitura con una modifica "regolare" non danneggerà alcun potenziale processo di revisione. Tuttavia, potresti voler raggruppare diverse banali correzioni in un commit, magari quando "ripulisci" dopo una sessione di codifica più ampia.

Si noti che i bug funzionali devono comunque essere impegnati al più presto in un commit atomico.

Il tono generale delle risposte qui sembra suggerire una strategia di "impegnare tutto velocemente" anche per errori di battitura minori. Tendo a non essere d'accordo e accogliere con favore la discussione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.