Was bedeutet #XXX in Codekommentaren?


126

Ich habe dies viel im Code gesehen, sogar vim markiert es als Sonderfall. #TODOund #FIXMEsind zwei andere Fixmarker vim Highlights, aber was bedeutet #XXXdas?


7
Die Frage bezieht sich auf Best Practices für Codetags oder Kommentare in der Python-Programmierung. Zu diesem Thema gibt es eine Diskussion über Python-Verbesserungsvorschläge. Die Frage verdient es, auf SO beibehalten zu werden. Es hätte allerdings etwas besser formuliert werden können.
Nik

Antworten:


140

XXXin einem Kommentar ist in der Regel ein Heads-up. Es könnte sein:

  • Etwas, das nicht ganz richtig implementiert ist.
  • Etwas, das später behoben werden sollte.
  • Hervorheben eines möglichen Problempunkts.
  • Etwas, bei dem Sie sich nicht sicher sind, eine Frage.

Ich habe oft ein aussagekräftigeres Tag wie FIXMEoder TODOoder bevorzugt HACK. XXXwird oft als Fang für alle oben genannten verwendet.

Die Suche nach 'XXX' im FreeBSD-Code-Querverweis ist ein gutes Beispiel für viele Verwendungszwecke. Es gibt Tausende...


Was lustig ist, ist, dass ich das alleine benutze. XXX oder #XXX löst im Grunde den Compiler aus und erinnert mich daran, auf etwas zurückzukommen. Im Allgemeinen Zeigerreferenzen oder ein zuvor unbekannter Wert oder Variablenname.
Bobby

5
Dies bestätigte meine ursprüngliche Vermutung: Es ist einfach ein Catch-All-Tag, um andere Programmierer darauf hinzuweisen, diesen Kommentar als etwas hervorzuheben, das man sich ansehen sollte.
Jorge Vargas

Kein Versuch zu trollen, aber "HACK" ist nicht beschreibend. In der Tat ist es sehr vieldeutig. Für mich könnte es mindestens 3 Dinge bedeuten.
Ярослав Рахматуллин

2
@ ЯрославРахматуллин im Quellcode Ich würde es immer im Sinne von "Dies ist ein hässlicher Hack-Job, scheint aber gut genug zu funktionieren" lesen - etwas, das Sie später aufräumen möchten, das aber nicht dringend ist. Ich habe es nicht benutzt (ich benutze es normalerweise TODOoder XXXstattdessen), aber so würde ich es interpretieren.
Iiridayn

92
  • NOTE: Beschreibung der Funktionsweise des Codes (wenn dies nicht selbstverständlich ist).
  • XXX: Warnung vor möglichen Fallstricken, kann als verwendet werden NOTE:XXX:.
  • HACK: Nicht sehr gut geschriebener oder fehlerhafter Code, um ein Problem / einen Fehler zu umgehen. Sollte als verwendet werden HACK:FIXME:.
  • FIXME: Das funktioniert irgendwie, aber es könnte besser gemacht werden. (Normalerweise Code, der in Eile geschrieben wurde und neu geschrieben werden muss).
  • BUG: Hier gibt es ein Problem.
  • TODO: Kein Problem, aber zusätzlicher Code muss geschrieben werden, normalerweise wenn Sie etwas überspringen.

Zumindest wurde mir so etwas über diese Tags beigebracht. Grundsätzlich werden die ersten beiden ( NOTEund XXX) zur Information verwendet und es sind keine Maßnahmen erforderlich. Während die letzten drei ( FIXME, BUGund TODO) Maßnahmen erfordern. HACKliegt irgendwo dazwischen (und wird wohl kaum benutzt?).


3
Gute Liste. Ich mag auch LAZY(nicht so kritisch wie FIXME oder HACK) und OCD(bekanntes Overengineering).
Brendan Byrd

2
Verwenden Sie XXX wirklich so? Ich habe festgestellt, dass XXX eine viel höhere Priorität hat, was bedeutet, dass "dies behoben werden muss, bevor dieser Code überhaupt der Revisionskontrolle unterzogen wird". Auf diese Weise wird es in Google verwendet und automatisch erzwungen, sodass Sie möglicherweise XXXs während der Codeüberprüfung sehen, aber es ist unmöglich, den Code zu senden, bis die XXXs verschwunden sind. Langlebigere Aufgabennotizen
Don Hatch

21

Einige Notizen aus einem Python-Verbesserungsvorschlag vom Juni 2005, der abgelehnt wurde .

Die Wahl zwischen FIXMEund XXXist schwierig.
XXXscheint häufiger, aber viel weniger beschreibend zu sein.
Darüber hinaus XXXist es ein nützlicher Platzhalter in einem Code
mit einem unbekannten Wert.

Somit FIXMEist die bevorzugte Schreibweise.
Sun sagt das XXXund FIXMEist etwas anders, was eine XXXhöhere Schwere ergibt .
Angesichts des jahrzehntelangen Chaos in diesem Bereich und zu vieler Millionen
Entwickler, die nicht von Sun beeinflusst werden, ist es jedoch einfach, sie zu Recht als Synonyme zu bezeichnen.


Der PEP beginnt mit,

Dieser PEP wurde abgelehnt. Obwohl die Community interessiert sein mag,
besteht kein Wunsch, die Standardbibliothek an diesen Standard anzupassen.

...

Was sind Codetags?

Programmierer verwenden häufig Ad-hoc-Konventionen zum Markieren von Codekommentaren, um an Codeabschnitte zu erinnern, die näher untersucht oder überprüft werden müssen. Beispiele für Markup gehören FIXME, TODO, XXX, BUG, aber viele mehr in den breiten Einsatz in bestehende Software gibt. Ein solches Markup wird fortan als Codetags bezeichnet . Diese Codetags können in Anwendungscode, Komponententests, Skripten, allgemeiner Dokumentation oder wo immer geeignet angezeigt werden.


Das PEP ist eine interessante Lektüre.


10

Schauen Sie sich PEP350 an . Es erklärt alle TODO, XXXusw. ich es jeden Tag benutzen , wenn ich nicht genau , was eines der Code - Tags Mittel erinnern kann.


1
Wissen Sie, ob PEP350 der Ursprung dieser Etiketten ist? Kennen Sie ältere Dokumente (aus der Unix-Ära), in denen die Verwendung dieser Etiketten beschrieben wird?
Ярослав Рахматуллин

6

Ich benutze, XXXweil es einfacher zu tippen ist als TODO.

XXX ist für, wenn Sie es eilig haben und selbst darauf zurückkommen werden.

TODO ist für den Fall, dass Sie es an jemand anderen weitergeben müssen.


XXX bedeutet "Ich habe es eilig und werde selbst darauf zurückkommen". TODO bedeutet "Dies ist ein offizieller Teil einer zukünftigen Rückstandsanfrage, die jemand anderem zugewiesen wird." Das sind die wörtlichen Bedeutungen.
S.Lott

2
Und in welchem ​​RFC sind diese "wörtlichen Bedeutungen"? Oder gibt es dafür ein anderes Zitat?
Randall

6
@ Randall: "Zitat"? Entschuldigung, es ist nur mein Verständnis, nachdem ich viel Code gelesen habe.
S.Lott


3

Aus (alten) Java-Code-Konventionen :

Verwenden Sie XXX in einem Kommentar, um etwas zu markieren, das falsch ist, aber funktioniert. Verwenden Sie FIXME, um etwas zu markieren, das gefälscht und kaputt ist.


1

XXX ist die Abkürzung für Caveat, die sich geringfügig von NOTE unterscheidet, aber HACK sehr ähnlich ist. Es kann sich um einen Fehler in einer Bibliothek / einem Code eines Drittanbieters handeln, der / die verwendet wird, und der Code mit // XXX: zeigt an, dass es sich entweder um eine Problemumgehung aufgrund eines Fehlers im Code eines Drittanbieters handelt oder dass er für jemanden, der sucht / ändert, "Vorsicht" bedeuten kann der Code, der angibt, warum etwas auf eine bestimmte Weise getan wird, die ansonsten auf den ersten Blick falsch / unelegant erscheint. HACK ist ein Oberbegriff, der eine Problemumgehung für ein Problem bedeutet, das entweder in Ihrer eigenen Codebasis oder in einer Bibliothek eines Drittanbieters vorhanden sein kann.


0

Ich glaube, während FIXMEes für den Entwickler und HACKfür den Betreuer ist, XXXist es für den Benutzer.

Wenn Sie beispielsweise die XXXFunktion ignorieren und an anderer Stelle aufrufen, ohne zu verstehen, wie sie funktioniert, kann etwas Unerwartetes passieren, und die Person, die sich mit diesem Problem befasst, ist unglücklich (zumindest die Person, die das hinzugefügt hat, XXXglaubt dies). Sie können denken, dass das Problem behoben ist, wenn Sie diese Funktion nicht verwenden.

Aber FIXMESie werden sich würdig fühlen, nur den Code zu reparieren, damit er funktioniert. Und HACKvielleicht haben Sie keine bessere Wahl, auch wenn Sie es nicht benutzen.

Wenn Sie XXXauf Ihren eigenen Code geschrieben haben und jemand ihn verwendet hat, fühlen Sie sich möglicherweise aus Gründen unglücklich, weil Sie diesen Code komplett neu geschrieben haben. Dann verhält er sich völlig anders und Sie haben den Code eines anderen gebrochen. Aber wenn Sie ein FIXMEoder TODOstattdessen verlassen haben, wird es Sie nicht so sehr interessieren.


0

Ich benutze // XXX, damit ich mich nicht an Zeilennummern erinnern muss. Stattdessen suche ich nur nach dem XXX, wenn ich zu diesem Code zurückkehren möchte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.