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?
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.
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?).
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
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.
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.
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.
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.
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.
Respostas:
XXX
em um comentário geralmente é um alerta. Poderia ser:Eu sempre preferi uma tag mais descritiva como
FIXME
ouTODO
ouHACK
.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 ...
fonte
TODO
ouXXX
não), mas é assim que eu o interpretaria.NOTE
: Descrição de como o código funciona (quando não é evidente).XXX
: Aviso sobre possíveis armadilhas, pode ser usado comoNOTE:XXX:
.HACK
: Código não muito bem escrito ou mal formado para contornar um problema / bug. Deve ser usado comoHACK: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 (
NOTE
eXXX
) são usados para obter informações e nenhuma ação é necessária. Enquanto os últimos três (FIXME
,BUG
eTODO
) exigem ação.HACK
está em algum lugar no meio (e quase nunca foi usado, eu acho?).fonte
LAZY
(não tão crítico quanto FIXME ou HACK) eOCD
(superengenharia conhecida).Algumas notas de uma proposta de aprimoramento do Python de junho de 2005 que foram rejeitadas .
O PEP começa com,
...
O PEP é uma leitura interessante.
fonte
Dê uma olhada no PEP350 . Explica tudo
TODO
,XXX
etc. Eu o uso todos os dias quando não consigo lembrar exatamente o que significa uma das tags de código.fonte
Eu uso
XXX
porque é mais fácil digitar do queTODO
.XXX
é para quando você estiver com pressa e voltar a isso sozinho.TODO
é para quando você tiver que entregá-lo a outra pessoa.fonte
Provavelmente é para casos que você não sabe como lidar.
Confira isto: Exibição em lista de instruções TODO / FIXME / XXX / HACK
texto alternativo http://editra-plugins.googlecode.com/svn/wiki/images/commentbrowser/cb_screenshot.PNG
fonte
De convenções de código Java (antigas) :
fonte
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.
fonte
Acredito que enquanto
FIXME
é para o desenvolvedor eHACK
para o mantenedor,XXX
é para o usuário.Por exemplo, se você ignorar
XXX
e 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 adicionouXXX
isso 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. EHACK
, talvez você não tenha escolha melhor, mesmo que não a use.Se você escreveu
XXX
em 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 umFIXME
ouTODO
não, não se importará tanto.fonte
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.
fonte