Quelle est la signification de #XXX dans les commentaires de code?


126

J'ai beaucoup vu cela dans le code, même vim le marque comme un cas spécial. #TODOet #FIXMEdeux autres marqueurs de correction sont-ils mis en évidence par vim, mais qu'est-ce que cela #XXXsignifie?


7
La question se pose sur les bonnes pratiques de codetag ou de commentaire en programmation Python. Il y a une discussion sur la proposition d'amélioration de Python sur le sujet. La question mérite d'être retenue sur SO. Cela aurait pu être formulé un peu mieux.
nik le

Réponses:


140

XXXdans un commentaire est généralement un avertissement. Il pourrait être:

  • Quelque chose qui n'est pas complètement mis en œuvre correctement.
  • Quelque chose qui devrait être corrigé plus tard.
  • Mettre en évidence un éventuel problème.
  • Quelque chose dont vous n'êtes pas sûr, une question.

J'ai souvent préféré une balise plus descriptive comme FIXMEou TODOou HACK. XXXest souvent utilisé comme fourre-tout pour ce qui précède.

La recherche de «XXX» sur la référence croisée du code FreeBSD est un bon exemple de nombreuses utilisations. Il y en a des milliers ...


Ce qui est drôle, c'est que je l'utilise seul. XXX ou #XXX déclenche essentiellement le compilateur et me rappelle de revenir sur quelque chose. Généralement des références de pointeur ou une valeur ou un nom de variable inconnu auparavant.
bobby

5
Cela a confirmé ma supposition initiale, c'est simplement une balise fourre-tout pour indiquer aux autres programmeurs de mettre en évidence ce commentaire comme quelque chose à regarder.
Jorge Vargas

Pas d'essayer de troll, mais "HACK" n'est pas descriptif. En fait, c'est très ambigu. Pour moi, cela pourrait signifier au moins 3 choses.
Ярослав Рахматуллин

2
@ ЯрославРахматуллин dans le code source Je le lirais toujours dans le sens "c'est un travail de piratage moche, mais semble fonctionner assez bien" - quelque chose que vous aimeriez nettoyer plus tard, mais ce n'est pas urgent. Je ne l'ai pas utilisé (je l'utilise généralement TODOou à la XXXplace), mais c'est ainsi que je l'interpréterais.
Iiridayn

92
  • NOTE: Description du fonctionnement du code (quand cela ne va pas de soi).
  • XXX: Avertissement sur les pièges possibles, peut être utilisé comme NOTE:XXX:.
  • HACK: Code mal écrit ou mal formé pour contourner un problème / bug. Doit être utilisé comme HACK:FIXME:.
  • FIXME: Cela fonctionne, en quelque sorte, mais cela pourrait être mieux fait. (généralement du code écrit à la hâte qui doit être réécrit).
  • BUG: Il y a un problème ici.
  • TODO: Pas de problème, mais du code supplémentaire doit être écrit, généralement lorsque vous sautez quelque chose.

Au moins, c'est ainsi que j'ai appris ces balises. Fondamentalement, les deux premiers ( NOTEet XXX) sont utilisés à titre d'information et aucune action n'est requise. Alors que les trois derniers ( FIXME, BUGet TODO) ne nécessitent une action. HACKest quelque part entre les deux (et rarement utilisé je pense?).


3
Bonne liste. J'aime aussi LAZY(pas aussi critique que FIXME ou HACK) et OCD(overengineering connu).
Brendan Byrd

2
Utilisez-vous vraiment XXX comme ça? J'en suis venu à voir XXX comme une priorité beaucoup plus élevée, ce qui signifie "c'est quelque chose qui doit être corrigé avant même que ce code ne soit soumis au contrôle de révision". C'est la façon dont il est utilisé dans Google, automatiquement appliqué, vous pouvez donc voir des XXX lors de la révision du code, mais il est impossible de soumettre le code tant que les XXX ne sont pas partis. Les notes de tâches à
Don Hatch

21

Quelques notes d'une proposition d'amélioration de Python de juin 2005 qui a été rejetée .

Le choix entre FIXMEet XXXest difficile.
XXXsemble être plus courant, mais beaucoup moins descriptif.
De plus, XXXest un espace réservé utile dans un morceau de code
dont la valeur est inconnue.

Ainsi FIXMEest l'orthographe préférée.
Sun dit cela XXXet FIXMEsont légèrement différents, ce qui donne XXXune gravité plus élevée.
Cependant, avec des décennies de chaos sur ce sujet et trop de millions de
développeurs qui ne seront pas influencés par Sun, il est facile de les appeler à juste titre des synonymes.


Le PEP commence par,

Ce PEP a été rejeté. Bien que la communauté puisse être intéressée,
il n'y a aucun désir de rendre la bibliothèque standard conforme à cette norme.

...

Que sont les codetags?

Les programmeurs utilisent largement des conventions de balisage de commentaires de code ad hoc pour rappeler les sections de code qui nécessitent une inspection ou un examen plus approfondi. Des exemples de balisage comprennent FIXME, TODO, XXX, BUG, mais beaucoup plus largement utilisé dans les logiciels existants. Un tel balisage sera désormais appelé codetags . Ces codes peuvent apparaître dans le code de l'application, les tests unitaires, les scripts, la documentation générale ou le cas échéant.


Le PEP est une lecture intéressante.


10

Jetez un œil à PEP350 . Cela explique tout TODO, XXXetc. Je l'utilise tous les jours quand je ne me souviens pas exactement de ce que signifie l'une des balises de code.


1
Savez-vous si le PEP350 est à l'origine de ces labels? Connaissez-vous des documents plus anciens (de l'ère Unix) décrivant comment utiliser ces étiquettes?
Ярослав Рахматуллин

6

J'utilise XXXparce que c'est plus facile à taper que TODO.

XXX est pour quand vous êtes pressé et que vous y reviendrez vous-même.

TODO est pour quand vous devez le remettre à quelqu'un d'autre.


XXX signifie "Je suis pressé et j'y reviendrai moi-même". TODO signifie "Ceci est une partie officielle d'une future demande d'arriéré qui sera attribuée à quelqu'un d'autre." Telles sont les significations littérales.
S.Lott

2
Et dans quel RFC se trouvent ces «significations littérales»? Ou y a-t-il une autre citation pour cela?
Randall

6
@Randall: "citation"? Désolé, c'est juste ma compréhension après avoir lu beaucoup de code.
S.Lott


3

À partir des (anciennes) conventions de code Java :

Utilisez XXX dans un commentaire pour signaler quelque chose qui est faux mais qui fonctionne. Utilisez FIXME pour signaler quelque chose qui est faux et cassé.


1

XXX est l'abréviation de mise en garde qui est légèrement différente de NOTE mais assez similaire à HACK. Il peut s'agir d'un bogue dans une bibliothèque / un code tiers qui est utilisé et le code avec // XXX: indique qu'il s'agit d'une solution de contournement en raison d'un bogue dans le code tiers ou cela pourrait signifier "attention" à quelqu'un qui cherche / modifie le code pour indiquer pourquoi quelque chose est fait d'une certaine manière qui autrement peut sembler incorrect / inélégant à première vue. HACK est un terme générique signifiant une solution de contournement pour un problème qui pourrait être présent dans votre propre base de code ou dans une bibliothèque tierce.


0

Je crois que while FIXMEest pour le développeur, et HACKest pour le mainteneur, XXXest pour l'utilisateur.

Par exemple, si vous ignorez le XXXet appelez cette fonction ailleurs, sans comprendre comment cela fonctionne, quelque chose d'inattendu peut se produire, et la personne qui s'occupe de ce problème sera malheureuse (au moins celle qui l'a ajouté le XXXpense). Vous pouvez penser que le problème disparaîtra si vous n'utilisez simplement pas cette fonction.

Mais pour FIXME, vous vous sentirez digne de simplement corriger le code pour le faire fonctionner. Et pour HACK, vous n'aurez peut-être pas de meilleur choix même si vous ne l'utilisez pas.

Si vous avez écrit XXXsur votre propre code et que quelqu'un l'a utilisé, vous pouvez vous sentir malheureux pour des raisons telles que vous avez complètement réécrit ce code, et il se comporte alors de manière complètement différente et vous avez cassé le code de quelqu'un d'autre. Mais si vous avez laissé un FIXMEou à la TODOplace, vous ne vous en soucierez pas autant.


0

J'utilise // XXX pour ne pas avoir à me souvenir des numéros de ligne. Au lieu de cela, je recherche simplement le XXX lorsque je veux revenir à ce morceau de code.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.