Qual è il significato di #XXX nei commenti sul codice?


126

L'ho visto molto nel codice, anche Vim lo segna come un caso speciale. #TODOe #FIXMEsono altri due marcatori di correzione vim highlights ma cosa #XXXsignifica?


7
La domanda è relativa alle migliori pratiche di codetag o commento nella programmazione di Python. C'è una discussione sulla proposta di potenziamento di Python sull'argomento. La domanda merita di essere mantenuta su SO. Potrebbe essere stato formulato un po 'meglio però.
nik,

Risposte:


140

XXXin un commento è di solito un avvertimento. Potrebbe essere:

  • Qualcosa che non è stato implementato completamente correttamente.
  • Qualcosa che dovrebbe essere risolto in seguito.
  • Evidenziando un possibile problema.
  • Qualcosa di cui non sei sicuro, una domanda.

Ho spesso preferito un tag più descrittivo come FIXMEo TODOo HACK. XXXè spesso usato come un fermo tutto per quanto sopra.

Cercare 'XXX' nel riferimento incrociato del codice di FreeBSD è un buon esempio di molti degli usi. Ce ne sono migliaia ...


La cosa divertente è che lo uso da solo. XXX o #XXX fondamentalmente fa scattare il compilatore e mi ricorda di tornare su qualcosa. Generalmente riferimenti a puntatori o un valore o nome variabile precedentemente sconosciuto.
Bobby,

5
Ciò ha confermato la mia ipotesi originale, è semplicemente una cattura di tutti i tag per indicare altri programmatori per evidenziare quel commento come qualcosa da guardare.
Jorge Vargas,

Nessun tentativo di pesca a traina, ma "HACK" non è descrittivo. In effetti, è molto ambiguo. Per me, potrebbe significare almeno 3 cose.
Ярослав Рахматуллин

2
@ ЯрославРахматуллин nel codice sorgente Lo leggevo sempre nel senso "questo è un brutto lavoro di hacking, ma sembra funzionare abbastanza bene" - qualcosa che vorresti ripulire in seguito, ma non è urgente. Non l'ho usato (di solito lo uso TODOo XXXinvece), ma è così che lo interpreterei.
Iiridayn

92
  • NOTE: Descrizione di come funziona il codice (quando non è evidente).
  • XXX: Avviso di possibili insidie, può essere utilizzato come NOTE:XXX:.
  • HACK: Codice non ben scritto o non valido per eludere un problema / bug. Dovrebbe essere usato come HACK:FIXME:.
  • FIXME: Funziona in un certo senso, ma potrebbe essere fatto meglio. (di solito codice scritto in fretta che deve essere riscritto).
  • BUG: C'è un problema qui.
  • TODO: Nessun problema, ma è necessario scrivere un codice aggiuntivo, di solito quando si salta qualcosa.

Almeno è così che mi hanno insegnato questi tag. Fondamentalmente i primi due ( NOTEe XXX) sono usati per informazione e non è richiesta alcuna azione. Mentre gli ultimi tre ( FIXME, BUGe TODO) richiedono azione. HACKè da qualche parte nel mezzo (e quasi mai usato penso?).


3
Buona lista. Mi piace anche LAZY(non così critico come FIXME o HACK) e OCD(noto overengineering).
Brendan Byrd,

2
Usi davvero XXX in questo modo? Sono arrivato a vedere XXX come priorità molto più alta, il che significa "questo è qualcosa che deve essere risolto prima che questo codice venga sottoposto al controllo di revisione". Questo è il modo in cui viene utilizzato all'interno di Google, applicato automaticamente, quindi potresti vedere XXX durante la revisione del codice ma è impossibile inviare il codice fino a quando i XXX non sono spariti. Le note di attività più lunghe possono essere contrassegnate con TODO, che possono essere inviate fintanto che il nome di qualcuno o un ID bug è allegato.
Don Hatch,

21

Alcune note da una proposta di potenziamento di Python del giugno 2005 che è stata respinta .

Scegliere tra FIXMEed XXXè difficile.
XXXsembra essere più comune, ma molto meno descrittivo.
Inoltre, XXXè un utile segnaposto in un pezzo di codice
con un valore sconosciuto.

Quindi FIXMEè l'ortografia preferita.
Sun lo dice XXXe FIXMEsono leggermente diversi, dando XXXmaggiore gravità.
Tuttavia, con decenni di caos su questo argomento e troppi milioni di
sviluppatori che non saranno influenzati da Sun, è facile chiamarli giustamente sinonimi.


Il PEP inizia con,

Questo PEP è stato respinto. Mentre la comunità può essere interessata,
non c'è alcun desiderio di rendere la libreria standard conforme a questo standard.

...

Cosa sono i codetag?

I programmatori utilizzano ampiamente le convenzioni di markup del commento del codice ad hoc per servire da promemoria di sezioni di codice che richiedono un'ispezione o una revisione più ravvicinate. Esempi di markup includono FIXME, TODO, XXX, BUG, ma non molti di più in un grande uso nei software esistente. D' ora in poi tale marcatura sarà denominata codetag . Questi tag possono comparire nel codice dell'applicazione, unit test, script, documentazione generale o dove opportuno.


Il PEP è una lettura interessante.


10

Dai un'occhiata a PEP350 . Spiega tutto TODO, XXXecc. Lo uso tutti i giorni quando non ricordo esattamente cosa significhi uno dei tag di codice.


1
Sai se PEP350 è l'origine di queste etichette? Conoscete documenti più vecchi (dell'era Unix) che descrivono come usare queste etichette?
Ярослав Рахматуллин

6

Uso XXXperché è più facile da digitare di TODO.

XXX è per quando hai fretta e tornerai a questo da solo.

TODO è per quando devi consegnarlo a qualcun altro.


XXX significa "Ho fretta e tornerò su questo me stesso" TODO significa "Questa è una parte ufficiale di una futura richiesta di arretrato che verrà assegnata a qualcun altro". Questi sono i significati letterali.
S. Lott

2
E in quale RFC si trovano quei "significati letterali"? O c'è qualche altra citazione per questo?
Randall,

6
@Randall: "citazione"? Ci dispiace, è solo la mia comprensione dopo aver letto molto codice.
S. Lott,



1

XXX è l'abbreviazione di avvertenza che è leggermente diversa dalla NOTA ma abbastanza simile a HACK. Potrebbe essere un bug in una libreria / codice di terze parti che viene utilizzato e il codice con // XXX: indica che o è una soluzione alternativa a causa di un bug nel codice di terze parti o potrebbe significare "attenzione" per qualcuno che cerca / modifica il codice per indicare perché qualcosa viene fatto in un certo modo che altrimenti potrebbe sembrare errato / inelegante a prima vista. HACK è un termine generico che significa una soluzione alternativa per un problema che potrebbe essere presente nella propria base di codice o in una libreria di terze parti.


0

Credo che FIXMEsia per lo sviluppatore, HACKsia per il manutentore, XXXsia per l'utente.

Ad esempio, se si ignora XXXe si chiama questa funzione altrove, senza capire come funziona, può accadere qualcosa di inaspettato e la persona che si occupa di questo problema sarà infelice (almeno chi ha aggiunto la XXXpensa così). Potresti pensare che il problema sparirà se non usi questa funzione.

Ma per FIXME, ti sentirai degno di aggiustare il codice per farlo funzionare. E per HACK, potresti non avere scelta migliore anche se non lo usi.

Se hai scritto XXXsul tuo codice e qualcuno lo ha usato, potresti sentirti infelice per ragioni come riscrivere completamente quel codice, e poi si comporta in modi completamente diversi e hai infranto il codice di qualcun altro. Ma se hai lasciato un FIXMEo TODOinvece, non ti importerà così tanto.


0

Uso // XXX quindi non devo ricordare i numeri di riga. Invece cerco solo la XXX quando voglio tornare a quel pezzo di codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.