Lohnt es sich, nur unkritische Tippfehler zu beheben?

67

Wenn ich auf einen unkritischen Tippfehler im Code stoße (z. B. einen fehlerhaften Apostroph in einer Druckanweisung (Fehleranweisung)), lohnt es sich, diesen Fehler zu beheben, oder sollte er einfach in Ruhe gelassen werden?

Insbesondere bin ich neugierig darauf, das Aufsummieren des Commit-Protokolls gegen den Wert der Lösung dieser nicht kritischen Tippfehler abzuwägen. Ich neige dazu, sie aufzulösen. Bin ich pedantisch?

Christopher Berman
quelle
40
Wenn ein triviales Commit zu Problemen führt, müssen Sie entweder in ein besseres VCS, bessere Tools zum Filtern von Protokollen oder bessere Methoden zum Notieren unterschiedlicher Schweregrade von Fixes investieren.
Rex Kerr
@ root45 Wenn Sie sich die Ergebnisse dafür ansehen, sind sie alle eine andere Art von Grammatik als diese Frage.
Izkata

Antworten:

130

Ich persönlich bin der Meinung, dass die Verbesserung der Qualität die geringfügige Unannehmlichkeit eines zusätzlichen Eintrags im Festschreibungsprotokoll wert ist, selbst bei kleinen Verbesserungen. Schließlich zählen kleine Verbesserungen viel, wenn Sie den Effekt der zerbrochenen Fenster berücksichtigen .

Möglicherweise möchten Sie ein TRIVIAL:Tag voranstellen oder es als trivial markieren, wenn Ihr VCS dies unterstützt.

Thiton
quelle
72
Ich möchte nur hinzufügen, dass ich solche Dinge lieber separat begehen möchte, als sie mit etwas anderem in Verbindung zu bringen. Das Problem beim Zusammenfassen ist, dass zu viel Rauschen einen Codeüberprüfer von den relevanten Änderungen ablenken kann. +1
Andy
9
+1 für die Erwähnung des Fenstereffekts. Kleine Dinge sind wichtig. Wenn alles wirklich sauber ist, werden die Leute zweimal überlegen, bevor sie nachlässig geschriebenen oder nicht getesteten Code schreiben.
Roy Tinker
25
Auch wenn Sie es mit einem Feature in Verbindung bringen, können Sie das Feature zurücksetzen, bei dem Sie die Änderung verlieren. Legen Sie eine Sache nach der anderen fest.
Strg-Alt-Delor
4
Es würde mich sehr interessieren, welche VCS es erlauben, Kommentare als trivial zu markieren. Ich habe mit SVN, Hg und Git gearbeitet und auch nichts davon bemerkt.
Xion
3
@Andy, dass Rauschen nicht der schlimmste Teil ist ... Wenn jemand später entscheidet, zum Beispiel diesen Commit zurückzusetzen, weil er diese Funktion nicht möchte, verliert er plötzlich auch eine kleine Verbesserung, die Teil des Commits war.
rFactor
49

Sie sind nicht pedantisch, und es ist besser, sie einzeln zu lösen. Je atomarer eine Änderung ist, desto besser - Sie möchten nicht, dass ein abstürzender Bugfix mit 500 Kommentar- / Tippfehleränderungen verwechselt wird.

jmoreno
quelle
9
+1 Jede Revision sollte sich nur auf einen bestimmten Fix beziehen. Das Backportieren von Korrekturen wird zum Alptraum, wenn in jeder Revision auch eine Reihe von zufälligen Tippfehlern zwischen tatsächlichen Änderungen behoben wurden.
Erteilen Sie den
28

Im allgemeinen Fall: Ja

Es lohnt sich immer, die Wartbarkeit Ihrer Software zu erhöhen .

TU es einfach.

Wenn Sie gerade dabei sind, eine Veröffentlichung zu veröffentlichen ...

... und wenn Sie nicht der Teamleiter sind, wenden Sie sich an ihn .


Zum Inhalt des Commit-Logs ...

Ich stimme anderen zu, dass Sie zumindest etwas schreiben sollten, um es von "Feature" -bezogenen Commits zu unterscheiden, wenn es nur darum geht, einen isolierten Tippfehler zu beheben.

Es ist eine gängige Praxis, einige unendliche Aufgaben in Ihrem Issue-Tracker zu haben, um zeitlose und endlose Änderungen zu verfolgen. Zum Beispiel ist es nicht ungewöhnlich, eine Aufgabe zu haben für:

  • große automatisierte harmlose Bereinigungen (Whitespaces Sweeps),
  • Grammatik- und Tippfehlerjagd,
  • Systemmodifikationen erstellen,
  • usw...

Seien Sie nur vorsichtig, dass diese nicht als Wegwerf-Aufgaben-ID für irgendetwas verwendet werden, wenn die Leute faul werden, korrekt dokumentierte Tickets zu erstellen. Vor allem, wenn Sie Commits ablehnen, die nicht mit einer ID verknüpft sind (was gut ist, aber große Aufgaben wie diese für faule Entwickler noch attraktiver sind).

Haylem
quelle
7
Fragen Sie Ihren Teamleiter nach Tippfehlern? Wenn ich der Teamleiter wäre, der mit der bevorstehenden Veröffentlichung gestresst ist, würde ich nicht mit solchen Kleinigkeiten gestört werden wollen.
Joh
2
@Joh: Es ist nicht so, dass Sie den Build unbedingt abbrechen müssten, aber es könnte andere Build-Jobs geben oder einer ist bereits markiert und einsatzbereit, und Ihre Audit-Kontrollen (abhängig von Ihrer Branche) könnten Sie dazu zwingen, dieses harmlose Commit durchzuführen an Aufgaben und Anforderungen, wenn es also aus dem Nichts kommt, kann das nur ein bisschen Kopfzerbrechen sein; was Sie leicht für nur ein paar Tage nach der Veröffentlichung speichern könnten. Aber im Allgemeinen stimme ich Ihnen zu, und ich würde sogar sagen, dass eine solche Firma es falsch macht. Aber Sie sind nicht derjenige, der das regelt, also lassen Sie es von ihnen laufen, wenn Sie nicht älter sind.
Haylem
2
@Joh: Wenn mein Teamleiter sieht, dass plötzlich ein neuer Build auf dem Build-System hochspringt, wenn er einen neuen Build starten will (oder bereits gestartet hat), dann kann ich Ihnen versichern, dass sein Stresslevel durch diesen Ansatz steigen wird auch ...
Haylem
7

Tippfehler sollten als Commit hinzugefügt werden. Das Korrigieren von falsch geschriebenen Wörtern oder Grammatikfehlern verbessert die Lesbarkeit Ihres Codes.

Durch die Verwendung einer Festschreibungsmeldung wie "Fixed Typo" oder "Fixed Typo in file.c" können Sie diese Festschreibungen von anderen wichtigen Code-Festschreibungen unterscheiden.

Trevor
quelle
7

Ja, das sollten Sie unbedingt tun, besonders zu Beginn eines Projekts.

Warum? Zwei Punkte:

  1. Sie werden wahrscheinlich nicht wissen, ob ein Tippfehler "kritisch" ist oder nicht, bis es zu spät ist. Einige Fehlerbehebungen werden wahrscheinlich nicht behoben, weil jeder denkt, dass es keine große Sache sein wird. Bis es soweit ist.

  2. Das frühzeitige und gezielte Beheben eines Tippfehlers ist viel einfacher als das Beheben, nachdem mehrere hundert Code- / Funktionszeilen damit ausgeführt wurden. Wiederum können temporäre Hacks überraschend schnell semipermanent werden. Aus diesem Grund muss ich mich mit Objekten befassen, die sowohl die Methoden "CollapseAll" als auch "ColapseAll" haben.

joshin4colours
quelle
2
Ja - von allen richtigen Antworten mag ich diese am besten, um zu erwähnen, dass es vom "Wann" abhängt.
Wonko the Sane
4

Bei Grammatikfehlern, die von einem Endbenutzer gesehen werden können, lohnt es sich auf jeden Fall, ein Commit durchzuführen, da es durchaus möglich ist, dass ein Benutzer oder eine Qualitätssicherung den Fehler meldet und nachverfolgt werden muss. Wenn es bereits behoben ist, kann es die Zeit verkürzen, die zur Behebung des Problems benötigt wird.

Wenn es sich jedoch um einen grammatikalischen Fehler in den Kommentaren zum Code handelt, würde ich nichts dagegen unternehmen, es sei denn, dies ist Teil der Änderungen am eigentlichen Code. In diesem Fall aktualisieren Sie die Dokumentation des Codes.

rjzii
quelle
3

Wenn Sie befürchten, das Commit-Protokoll zu verfälschen, tun Sie etwas anderes. :-) Häufige Commits sind eine gute Sache! Ich beende die ganze Zeit Tippfehlerbehebungen. Holen Sie sie sich so schnell wie möglich in die Codebasis und beschleunigen Sie den Entwicklungszyklus!

Brian Knoblauch
quelle
2
I commit typo fixes all the timeIMO, das ist beunruhigend, versuchen Sie, Programmierer mit besserem Englisch zu finden?
Lie Ryan
Du nimmst, was du heutzutage kriegen kannst. Es ist ein ernstes Problem, Programmierer zu finden, die überhaupt funktionsfähigen Code schreiben können!
Brian Knoblauch
2

Ich stimme ja. Checken Sie sie ein. Ich habe für eine Firma gearbeitet, die es hasste, Leute einzuchecken. Ich meine fast alles. Die Code-Überprüfungen waren umfangreich. Sie können sich den Zustand des Codes vorstellen. Eigentlich war der Code nicht schrecklich, aber er sickerte eher wie Melassesirup als wie Wein.

Ian
quelle
0

Ermöglicht Ihr Change Management-Prozess dies?

In meiner Umgebung muss jedes von mir getätigte Commit an eine Änderungsanforderung gebunden sein, die entweder von den Geschäftsbenutzern angefordert wurde, oder an eine obligatorische Änderung auf Systemebene, einschließlich der entsprechenden Endbenutzertestprozesse. Ein einfacher Tippfehler, wie Sie ihn beschreiben, würde wahrscheinlich nicht als einer dieser Fehler protokolliert werden (ich habe Tippfehler und grammatikalische Fehler in einer meiner Apps gefunden, die über 4 Jahre bestanden, ohne dass jemand etwas davon mitbekam) Ich würde es sehr schwer haben, mich selbst zu erklären.

Ich würde eine Änderung, wie Sie sie beschreiben (und tatsächlich eine haben - ein Methodenname ist falsch geschrieben und ich habe sie gerade entdeckt) für eine Zeit speichern, in der ich eine "echte" Änderung haben muss, die sein muss auch gemacht und "verschiedene Tippfehler behoben" ins Log geschrieben.

alroc
quelle
+1 In einigen Umgebungen ist dies der Fall. Bitte stimmen Sie nicht ab, nur weil dies dort, wo Sie arbeiten, nicht zutrifft.
MarkJ
-1 Ihr Change-Management-Prozess scheint viel Zeit in Anspruch zu nehmen . Ich würde verstehen (und sogar bevorzugen ), dass jedes Commit mit einer Änderungsanforderung in Verbindung gebracht werden muss - dieser Teil Ihres Prozesses sieht gut aus. Aber OMG, es sieht so aus, als ob von Entwicklern initiierte Anfragen (wie das Umgestalten dieser / das Beheben von Tippfehlern darin ) verboten sind, was eine große rote Fahne für mich auslöst. Er geht davon aus Art von Business - Anwender / Wirtschaftsprüfer immer weiß besser als Entwickler - wenn das der Wahrheit immer nahe sein würde, dann würden sie den Code selbst schreiben
gnat
Wenn der Entwickler die Leute, die dies gutheißen, von den Änderungen überzeugen kann, für die sie sich lohnen, dann können sie weitermachen. Aber wenn ich einen einfachen Tippfehler im Namen einer Methode finde oder einen Code finde, der kopiert / eingefügt wird und der in eine Methode überarbeitet werden sollte, kann ich die Änderung nicht ohne Genehmigung vornehmen. Es geht nicht nur darum, "mit dem Code das Richtige zu tun" - Akzeptanztests müssen durchgeführt werden, und Entwickler sind nicht in der Lage, den Geschäftsleuten zu sagen: "Ich habe diese Änderung vorgenommen, Sie werden nie merken, was ich tue aber Sie müssen einen Testzyklus durchlaufen. "
Alroc
@alroc, dass "if-can-convince" nur einen kontraproduktiven Prozess unter einer vernünftig aussehenden Oberfläche verbirgt. Die Forderung, Unternehmen / Prüfer von großen Änderungen, vereinbarten Meilensteinprüfpunkten / -veröffentlichungen usw. zu überzeugen, ist sinnvoll, OK. Es ist langweilig, aber fair, ein paar Stunden / Tage zu investieren, um einen Aufwand zu rechtfertigen, der eine Woche Entwickler- und Qualitätssicherung erfordert. Aber zwingt dies für jede einzelne Rechtschreibung fix oder Extrakt - Methode ... gib mir eine Pause - das ist nichts anderes als Kontrolle gedankenlos an der falschen Bühne in der falschen Zeit eingeführt
gnat
Lassen Sie mich das noch einmal erklären. Wenn ich einen Tippfehler korrigieren oder eine Methode extrahieren kann, während ich an einer anderen genehmigten Änderung arbeite, kann ich ihn einfügen, ohne dass jemand darauf verkaufen muss. Ich kann jedoch keine Änderungen vornehmen, die für den Benutzer nicht sichtbar sind und sich nicht direkt positiv auf das Unternehmen / die Benutzer auswirken, ohne vorher die entsprechenden Fähigkeiten zu verkaufen.
Alroc
-1

Verwenden Sie DVCS, um den Verlauf zu bearbeiten

Wenn Sie sich Sorgen über einen sauberen Festschreibungsverlauf machen, sollten Sie Ihre Hauptarbeit in Feature-Zweigen erledigen . Wenn Sie zufällig mit einem verteilten VCS arbeiten , können Sie Ihren Festschreibungsverlauf problemlos bearbeiten, bevor Sie ihn in den Hauptzweig verschieben. Wenn Sie auf SVN sind, probieren Sie Git aus - es kann bidirektional mit Subversion interagieren und Sie können den Verlauf auch bearbeiten, bevor Sie sich tatsächlich für Subversion verpflichten.

Behalte den gesunden Menschenverstand bei

Wenn Sie den Commit-Verlauf nicht bearbeiten möchten oder können, gibt es keinen funktionalen Grund, einen frühen oder atomaren Commit für einen geringfügigen Tippfehler durchzuführen, der die automatischen Tests oder das Kompilieren nicht beeinträchtigt . In diesen Fällen sollte es meiner Meinung nach wichtiger sein, den Commit-Verlauf sauber zu halten, als wirklich atomare Commits durchzuführen. Das Mischen von ein oder zwei Tippfehler-Korrekturen mit einer "regulären" Änderung schadet keinem potenziellen Überprüfungsprozess. Möglicherweise möchten Sie jedoch mehrere triviale Korrekturen zu einem Commit zusammenfassen, z. B. beim "Aufräumen" nach einer größeren Codierungssitzung.

Beachten Sie, dass Funktionsfehler in einem atomaren Commit nach wie vor so schnell wie möglich festgeschrieben werden sollten.

Der allgemeine Ton der Antworten hier scheint darauf hinzudeuten, dass es sich auch bei geringfügigen Tippfehlern um eine Strategie handelt, die "alles schnell festlegt". Ich bin eher anderer Meinung und begrüße Diskussionen.

krlmlr
quelle