2009-12-09 8 views
9

Und wenn ja, wo zeichnest du die Linie? Meine Kollegen und ich stimmen zu diesem Thema nicht überein. Ich habe solche Dinge gesehen, wieIst es in Ordnung, Kommentare zu Fehlerkorrekturen in den Quellcode zu schreiben?

// fixes bug # 22 

zu

// fixed bug: shouldnt be decrementing 
i++; 

Ist es in Ordnung, wenn die Änderung ziemlich signifikant ist, und radikal ändert, was die Methode geschrieben wurde, zu tun? Oder ändern Sie einfach den zusammenfassenden Text der Methode, um zu reflektieren, was es jetzt tun soll?

Meine Meinung ist, dass diese Informationen in die Quellcodeverwaltung eingegeben werden sollten. Einige sagen, dass dies schlecht ist, weil sie dann außerhalb des Kontextes der Quellcodeverwaltung verloren gehen (sagen Sie, dass Sie zwischen Systemen wechseln und historische Daten behalten wollen).

Antwort

32

Kommentare sollten erklären, wie die Methoden funktionieren.

Die Quellensteuerung erklärt, warum Änderungen vorgenommen wurden.

+1

Meine Gedanken genau. –

+1

Konnte nicht mehr zustimmen. – Davie

+0

Was hier gesagt wurde. –

4

Wir hatten ein paar Kommentare wie diese, aber dann starb unser Bugzilla-Server und wir starteten bei Bug # 1, so dass sie alle bedeutungslos sind. Eine kurze Erklärung des Fehlers ist jetzt meine bevorzugte Methode.

0

Unter der Annahme, Kommentare nicht überflüssig sind (das klassische i++; //increment i Beispiel in dem Sinne kommt), ist es so gut wie nie ein Grund gegen zu argumentieren, um einen Kommentar hinzufügen, unabhängig davon, was auf es bezogen. Informationen sind nützlich. Es ist jedoch am besten, beschreibend und prägnant zu sein - sage nicht "behebt den Fehler #YY", sondern füge etwas hinzu wie "das war früher für x = 0 fehlgeschlagen, die zusätzliche Logik verhindert das". Auf diese Weise kann jemand, der den Code später betrachtet, verstehen, warum ein bestimmter Abschnitt für eine ordnungsgemäße Funktion kritisch ist.

+1

... aber zu viele Informationen werden verwendet * weniger * und fügt nur Rauschen hinzu. –

+0

Daher die "Annahme der Kommentare sind nicht überflüssig" Einführung. Der Kommentar sollte immer noch für den Code relevant sein, aber nur weil ein Fehler nicht mehr vorhanden ist, bedeutet dies nicht, andere davon zu warnen, den Fehler erneut zu machen, ist nicht nützlich. – Amber

+0

Anstatt sich auf einen früheren Fehler zu beziehen, wäre es nicht besser zu sagen (für dieses Beispiel): "Dies verhindert einen Fehler, wenn x = 0". –

6

Nein. Sie sollten Informationen über Fehler und den Änderungssatz behalten, der den Fehler außerhalb des Quellcodes behebt. Alle Kommentare im Code selbst sollten sich nur auf den Code beziehen. Alles andere ist nur Unordnung.

6

Ich persönlich finde, dass Kommentare über den Code selbst sein sollten, nicht über einen Bugfix.

Mein Grund dafür ist Wartbarkeit - 2 (oder 10) Jahre später wird dieser Kommentar nicht mehr sinnvoll sein. In Ihrem Beispiel oben würde ich es vorziehen, so etwas wie:

// Increment i to counteract extra decrement 
++i; 

Der Unterschied besteht darin, dass es nicht zu einem Bug, gebunden ist, sondern vielmehr, was der Code tut. Kommentare sollten den Code kommentieren, nicht Meta-Informationen, IMO.

Diese Meinung ist zum Teil, weil ich eine sehr alte Codebasis halten - und wir haben viele Kommentare, die nicht sinnvoll mehr im Zusammenhang mit Fehlerkorrekturen oder Funktionserweiterung Anfragen, etc ....

0

ich auf FogBugz verlassen und Eincheckkommentare in SVN. Funktioniert gut, obwohl, wie Jeffaffone sagte, Fallnummern nicht viel Sinn machen, wenn Sie Ihre Fehlerdatenbank verlieren.

Ein Problem mit dem Einfügen von Kommentaren in den Code ist, dass Ihr Code im Laufe der Zeit mit Kommentaren über Probleme, die für eine Weile nicht bestanden haben, übersät ist. Wenn Sie solche Kommentare in die Check-in-Kommentare der Quellcodeverwaltung einfügen, binden Sie effektiv Informationen über den Fix an die spezifische Version, in der sie korrigiert wurden. Dies kann später hilfreich sein.

0

Meine Ansicht ist, dass Kommentare für die Absicht des Entwicklers relevant sein sollten, oder Highlights von "warum", die den Algorithmus/Methode umgeben.

Kommentare sollten keine Fix-in-Time enthalten.

23

Hinzufügen eines Kommentars über die Fehlerbehebung ist eine gute Idee, wenn Sie das Richtige schreiben.

Zum Beispiel

/* I know this looks wrong, but originally foo was being decremented here, and 
    it caused the baz to sproing. Remember, the logic is negated by blort! */ 

Sachen wie Fixes bug #22ist besser in der Quellcodeverwaltung gehalten. Kommentare in Ihrem Code sollten Wegweiser sein, um zukünftigen Besuchern auf ihrem Weg zu helfen, Prozesse und Tracking nicht zu befriedigen.

+9

+1. Ein Idealist würde so etwas sagen wie "Kommentare sollten erklären, wie die Methoden funktionieren. Die Quellenkontrolle erklärt, warum Veränderungen vorgenommen wurden." Dies ignoriert die Tatsache, dass wenn Sie komplizierten Code lesen, es hilft, zu wissen, warum etwas Unvorhergesehenes tut, und eine Erwähnung des Falls, der Einfluss darauf hatte, wie es geschrieben ist, ist so gut wie jeder andere dies zu erklären. – Edmund

+1

Nun, dieser Beispielkommentar erklärt, wie die Methode funktioniert. mit einem kleinen historischen Kontext geworfen. – Martin

+0

Vereinbart, hin und wieder müssen Sie etwas hineinlegen, das erklärt, warum Sie etwas tun, das die meiste Zeit dumm aussehen würde. – jcollum

0

Ich stimme zu, dass solche Daten in der Quellcodeverwaltung oder in einem anderen Teil Configuration Management abgelegt werden sollten. Nachdem ich in Codebasen gearbeitet habe, die Informationen über Fehlerbehebungen in Kommentaren platzieren, kann ich sagen, dass es später zu sehr überladenen Kommentaren und Code führt. Sechs Monate, nachdem der Fix in Kraft ist, willst du wirklich etwas über eine Zeile wissen, die einen lang zurückliegenden Fehler behebt? Was machen Sie mit Kommentaren, wenn Sie den Code umgestalten müssen?

2

Etwas wie // fixes bug # 22 ist für sich allein bedeutungslos, und erfordert zusätzliche Schritte, um sogar eine Vorstellung davon zu bekommen, was es bedeutet und welche Rolle es erfüllt. Eine kurze Beschreibung ist meiner Meinung nach geeigneter, unabhängig von der Bug-Tracking- oder Source-Control-Software, die Sie verwenden.

1

Wenn der Algorithmus auf eine bestimmte Art und Weise codiert werden muss - um zB einen Fehler in einer API von Drittanbietern zu umgehen, sollte dieser im Code kommentiert werden, damit die nächste Person, die mitkommt, nicht versucht " optimieren Sie den Code (oder was auch immer) und führen Sie ein Problem erneut ein.

Wenn Sie einen Kommentar hinzufügen, wenn Sie den ursprünglichen Fehler beheben, dann tun Sie es.

Es dient auch als Markierung, damit Sie den Code finden können, den Sie überprüfen müssen, wenn Sie jemals auf die nächste Version der API aktualisieren.

0

Wir verwenden Team Foundation Server für die Quellcodeverwaltung hier in meiner Firma und können einen Check-in an einen Fehlerbericht binden, also würde ich keinen Kommentar direkt in den Code schreiben, um denselben Zweck zu erfüllen.

Wie auch immer,, in Situationen, in denen ich Code als Workaround für einen Fehler im .NET Framework oder einer Drittanbieterbibliothek implementiere, lege ich die URL in das Microsoft TechNet-Protokoll oder die Website, die das beschreibt Fehler und sein Status.

+0

Rechts - ein Link zu einem * offenen * Bug ist etwas anderes. –

0

So offensichtlich

// fix bug #22 
    i++; 

ist nicht ein effektive Kommunikation.

Gute Kommunikation ist meist gesunder Menschenverstand. Sag was du meinst.

// Compensate for removeFrob() decrementing i. 
    i++; 

Fügen Sie die Fehlernummer hinzu, wenn sie zukünftigen Lesern wahrscheinlich hilft.

// Skipping the next flange is necessary to maintain the loop 
    // invariant if the lookup fails (bug #22). 
    i++; 

Manchmal werden wichtige Gespräche in Ihrem Fehlerverfolgungssystem aufgezeichnet. Manchmal führt ein Fehler zu einer Schlüsselerfahrung, die die Form des Codes ändert.

+0

Ein anderer Take: Bug-Nummern sind Hyperlinks. Derzeitiger Code und alte Fehler sind oft nicht verwandt, aber manchmal sind sie es und ein Link ist angebracht. –

0

Im Perl5-Quellenrepository ist es üblich, auf Bugs mit der zugehörigen Trac-Nummer in Testdateien zu verweisen.

Das macht mehr Sinn für mich, weil das Hinzufügen eines Tests für einen Fehler verhindert, dass dieser Fehler jemals wieder unbemerkt bleibt.

Verwandte Themen