Qual é o significado de #XXX nos comentários do código?

126

Eu já vi isso muito no código, até o vim o marca como um caso especial. #TODOe #FIXMEexistem outros dois marcadores de correção no vim destaques, mas o que #XXXsignifica?

Jorge Vargas
fonte
7
A pergunta é sobre as melhores práticas de codetag ou comentário na programação Python. Há uma discussão sobre a proposta de aprimoramento do Python sobre o assunto. A questão merece ser mantida no SO. Poderia ter sido redigido um pouco melhor embora.
Nik

Respostas:

140

XXXem um comentário geralmente é um alerta. Poderia ser:

  • Algo que não foi implementado completamente corretamente.
  • Algo que deve ser corrigido mais tarde.
  • Destacando um possível ponto problemático.
  • Algo que você não tem certeza, uma pergunta.

Eu sempre preferi uma tag mais descritiva como FIXMEou TODOou HACK. XXXé frequentemente usado como uma captura para o que foi dito acima.

Procurar 'XXX' na referência cruzada do código FreeBSD é um bom exemplo de muitos dos usos. Existem milhares ...

Stef
fonte
O engraçado é que eu uso isso sozinho. XXX ou #XXX basicamente aciona o compilador e me lembra de voltar a algo. Geralmente referências de ponteiro ou um valor anteriormente desconhecido ou nome de variável.
22139 bobby
5
Isso confirmou meu palpite original: é simplesmente uma tag catch all para indicar outros programadores para destacar esse comentário como algo para se olhar.
Jorge Vargas
Não tente trollar, mas "HACK" não é descritivo. De fato, é muito ambíguo. Para mim, isso pode significar pelo menos três coisas.
Ярослав Рахматуллин
2
@ ЯрославРахматуллин no código fonte Eu sempre o lia no sentido "este é um trabalho feio de hacker, mas parece funcionar bem o suficiente" - algo que você gostaria de limpar mais tarde, mas não é urgente. Eu não o usei (normalmente eu uso TODOou XXXnão), mas é assim que eu o interpretaria.
Iiridayn
92
  • NOTE: Descrição de como o código funciona (quando não é evidente).
  • XXX: Aviso sobre possíveis armadilhas, pode ser usado como NOTE:XXX:.
  • HACK: Código não muito bem escrito ou mal formado para contornar um problema / bug. Deve ser usado como HACK:FIXME:.
  • FIXME: Isso funciona, mais ou menos, mas poderia ser feito melhor. (geralmente código escrito com pressa que precisa ser reescrito).
  • BUG: Existe um problema aqui.
  • TODO: Não há problema, mas é necessário escrever um código adicional, geralmente quando você está pulando alguma coisa.

Pelo menos foi assim que me ensinaram sobre essas tags. Basicamente, os dois primeiros ( NOTEe XXX) são usados ​​para obter informações e nenhuma ação é necessária. Enquanto os últimos três ( FIXME, BUGe TODO) exigem ação. HACKestá em algum lugar no meio (e quase nunca foi usado, eu acho?).

Peter
fonte
3
Boa lista. Eu também gosto LAZY(não tão crítico quanto FIXME ou HACK) e OCD(superengenharia conhecida).
Brendan Byrd
2
Você realmente usa XXX assim? Cheguei a ver XXX como prioridade muito mais alta, significando "isso é algo que deve ser corrigido antes que esse código seja submetido ao controle de revisão". É assim que é usado no Google, aplicado automaticamente, para que você possa ver XXXs durante a revisão do código, mas é impossível enviar o código até que os XXXs acabem. As anotações de tarefas com vida útil mais longa
Don escotilha
21

Algumas notas de uma proposta de aprimoramento do Python de junho de 2005 que foram rejeitadas .

Escolher entre FIXMEe XXXé difícil.
XXXparece ser mais comum, mas muito menos descritivo.
Além disso, XXXé um espaço reservado útil em um pedaço de código
com um valor desconhecido.

Assim FIXMEé a grafia preferida.
A Sun diz isso XXXe FIXMEé um pouco diferente, dando XXXmaior gravidade.
No entanto, com décadas de caos sobre esse tópico e muitos milhões de
desenvolvedores que não serão influenciados pela Sun, é fácil chamá-los corretamente de sinônimos.


O PEP começa com,

Este PEP foi rejeitado. Embora a comunidade possa estar interessada,
não há desejo de fazer a biblioteca padrão estar em conformidade com esse padrão.

...

O que são etiquetas de código?

Os programadores usam amplamente as convenções de marcação de comentários de código ad-hoc para servir como lembretes de seções de código que precisam de inspeção ou revisão mais detalhadas. Exemplos de marcação incluem FIXME, TODO, XXX, BUG, mas muitos mais lá em amplo uso em software existente. A partir de agora, essa marcação será chamada de marca de código . Essas marcas de código podem aparecer no código do aplicativo, nos testes de unidade, nos scripts, na documentação geral ou onde for adequado.


O PEP é uma leitura interessante.

nik
fonte
10

Dê uma olhada no PEP350 . Explica tudo TODO, XXXetc. Eu o uso todos os dias quando não consigo lembrar exatamente o que significa uma das tags de código.

Ztyx
fonte
1
Você sabe se o PEP350 é a origem desses rótulos? Você conhece algum documento antigo (da era Unix) descrevendo como usar esses rótulos?
Ярослав Рахматуллин
6

Eu uso XXXporque é mais fácil digitar do que TODO.

XXX é para quando você estiver com pressa e voltar a isso sozinho.

TODO é para quando você tiver que entregá-lo a outra pessoa.

S.Lott
fonte
XXX significa "Estou com pressa e voltarei a isso" TODO significa "Esta é uma parte oficial de uma solicitação futura de pendências que será atribuída a outra pessoa". Esses são os significados literais.
285 S.Lott
2
E em quais RFC estão esses "significados literais"? Ou existe outra citação para isso?
Randall
6
@ Randall: "citação"? Desculpe, é apenas o meu entendimento depois de ler muito código.
S.Lott 12/05
3

De convenções de código Java (antigas) :

Use XXX em um comentário para sinalizar algo que é falso, mas funciona. Use o FIXME para sinalizar algo que é falso e quebrado.

Martin
fonte
1

XXX é uma abreviação de ressalva, que é um pouco diferente do NOTE, mas é bastante semelhante ao HACK. Pode ser um bug em uma biblioteca / código de terceiros que está sendo usado e o código com // XXX: indica que é uma solução alternativa devido a um bug no código de terceiros ou pode significar "cuidado" para alguém que está procurando / modificando o código para indicar por que algo é feito de uma certa maneira que, de outra forma, pode parecer incorreta / deselegante à primeira vista. HACK é um termo genérico que significa uma solução alternativa para um problema que pode estar presente em sua própria base de código ou em uma biblioteca de terceiros.

Divick
fonte
0

Acredito que enquanto FIXMEé para o desenvolvedor e HACKpara o mantenedor, XXXé para o usuário.

Por exemplo, se você ignorar XXXe chamar essa função em outro lugar, sem entender como ela funciona, algo inesperado poderá acontecer e a pessoa que estiver lidando com esse problema ficará infeliz (pelo menos a pessoa que adicionou XXXisso pensa). Você pode pensar que o problema desaparecerá se você simplesmente não usar esta função.

Mas FIXME, você se sentirá digno de corrigir o código para fazê-lo funcionar. E HACK, talvez você não tenha escolha melhor, mesmo que não a use.

Se você escreveu XXXem seu próprio código e alguém o usou, você pode se sentir infeliz por razões como reescrevê-lo completamente, e então se comportar de maneiras completamente diferentes, e você quebrou o código de outra pessoa. Mas se você deixou um FIXMEou TODOnão, não se importará tanto.

user23013
fonte
0

Eu uso // XXX, então não preciso lembrar os números das linhas. Em vez disso, basta procurar o XXX quando quero retornar a esse pedaço de código.

Água Azul
fonte