Normalerweise halte ich solche Kommentare für eine schlechte Praxis, und ich denke, diese Art von Informationen gehört zu den SCM-Festschreibungsprotokollen. In den meisten Fällen ist der Code nur schwerer zu lesen.
Ich mache jedoch immer noch oft so etwas für bestimmte Arten von Bearbeitungen.
Fall 1 - Aufgaben
Wenn Sie eine IDE wie Eclipse, Netbeans oder Visual Studio verwenden (oder eine andere Möglichkeit zur Textsuche in Ihrer Codebasis haben), verwendet Ihr Team möglicherweise bestimmte "Kommentar-Tags" oder "Task-Tags". In diesem Fall kann dies hilfreich sein.
Ich habe von Zeit zu Zeit beim Überprüfen des Codes Folgendes hinzugefügt:
// TOREVIEW: [2010-12-09 haylem] marking this for review because blablabla
oder:
// FIXME: [2010-12-09 haylem] marking this for review because blablabla
Ich verwende dafür verschiedene benutzerdefinierte Task-Tags, die ich in Eclipse in der Task-Ansicht sehen kann, da es eine gute Sache ist, etwas in den Commit-Protokollen zu haben, aber nicht genug, wenn Sie von einer Führungskraft in einem Review-Meeting gefragt werden, warum Bugfix XY vollständig vergessen wurde und schlüpfte durch. Bei dringenden Angelegenheiten oder wirklich fragwürdigen Codeteilen dient dies als zusätzliche Erinnerung (aber normalerweise werde ich den Kommentar kurz halten und die Commit-Protokolle überprüfen, da DIESES der Grund ist, weshalb die Erinnerung hier ist, damit ich den Code nicht überfülle viel).
Fall 2 - Libs-Patches von Drittanbietern
Wenn mein Produkt einen Code von Drittanbietern als Quelle (oder Bibliothek) packen muss, der jedoch aus der Quelle neu erstellt wurde, weil er aus irgendeinem Grund gepatcht werden musste, dokumentieren wir den Patch in einem separaten Dokument, in dem wir diese "Vorbehalte" auflisten. Der Quellcode enthält normalerweise einen Kommentar ähnlich dem folgenden:
// [PATCH_START:product_name]
// ... real code here ...
// [PATCH_END:product_name]
Fall 3 - Nicht offensichtliche Korrekturen
Dieser ist ein bisschen kontroverser und kommt dem, wonach Ihr Senior-Entwickler fragt, näher.
In dem Produkt, an dem ich gerade arbeite, haben wir manchmal (definitiv keine gemeinsame Sache) einen Kommentar wie:
// BUGFIX: [2010-12-09 haylem] fix for BUG_ID-XYZ
Wir tun dies nur, wenn der Bugfix nicht offensichtlich ist und der Code nicht normal liest. Dies kann zum Beispiel bei Browser-Macken der Fall sein oder obskuren CSS-Korrekturen, die Sie nur implementieren müssen, weil ein Dokumentfehler in einem Produkt vorliegt. Im Allgemeinen würden wir es also mit unserem internen Issue-Repository verknüpfen, das dann die ausführliche Begründung für den Bugfix und Verweise auf die Dokumentation des Fehlers des externen Produkts enthält (z. B. eine Sicherheitsempfehlung für einen bekannten Internet Explorer 6-Fehler) sowas in der Art).
Aber wie gesagt, ist es ziemlich selten. Und dank der Task-Tags können wir diese regelmäßig durchgehen und prüfen, ob diese seltsamen Korrekturen noch Sinn machen oder auslaufen können (zum Beispiel, wenn wir den Support für das fehlerhafte Produkt eingestellt haben, das den Fehler verursacht hat).
Dies nur in: Ein reales Beispiel
In manchen Fällen ist es besser als gar nichts :)
Ich bin gerade auf eine riesige statistische Berechnungsklasse in meiner Codebasis gestoßen, in der der Kopfzeilenkommentar in Form eines Änderungsprotokolls mit der üblichen yadda yadda lautete: Prüfer, Datum, Fehler-ID.
Zuerst dachte ich an das Verschrotten, aber ich bemerkte, dass die Fehler-IDs nicht nur nicht der Konvention unseres aktuellen Issue-Trackers entsprachen, sondern auch nicht derjenigen des Trackers, der vor meinem Eintritt in das Unternehmen verwendet wurde. Also habe ich versucht, den Code durchzulesen und zu verstehen, was die Klasse tat (kein Statistiker), und ich habe auch versucht, diese Fehlerberichte aufzuspüren. Zufälligerweise waren sie ziemlich wichtig und hätten das Leben des nächsten Mannes für die Bearbeitung der Datei gefordert, ohne dass er etwas über sie gewusst hätte, da es sich um geringfügige Präzisionsprobleme und Sonderfälle handelte, die auf sehr spezifischen Anforderungen des ursprünglichen Kunden beruhten . Fazit, wenn diese nicht da gewesen wären, hätte ich es nicht gewusst. Wenn sie nicht dort gewesen wären UND ich die Klasse besser verstanden hätte,
Manchmal ist es schwierig, sehr alte Anforderungen wie diese im Auge zu behalten. Am Ende habe ich immer noch den Header entfernt, aber nachdem ich einen Blockkommentar vor jeder belastenden Funktion eingefügt hatte, der beschreibt, warum diese "seltsamen" Berechnungen spezifische Anforderungen sind.
In diesem Fall hielt ich das immer noch für eine schlechte Praxis, aber ich war froh, dass der ursprüngliche Entwickler sie zumindest eingebaut hat! Wäre besser gewesen, den Code klar zu kommentieren, aber ich denke, das war besser als nichts.