¿Cuál es el significado de #XXX en los comentarios de código?

126

Lo he visto mucho en el código, incluso vim lo marca como un caso especial. #TODOy #FIXMEhay otros dos marcadores de corrección vim más destacados, pero ¿qué #XXXsignifica?

Jorge Vargas
fuente
77
La pregunta es acerca de las mejores prácticas de codetag o comentarios en la programación de Python. Hay discusión sobre la propuesta de mejora de Python sobre el tema. La pregunta merece ser retenida en SO. Sin embargo, podría haber sido redactado un poco mejor.
nik

Respuestas:

140

XXXen un comentario suele ser un aviso. Podría ser:

  • Algo que no está implementado completamente correctamente.
  • Algo que debería arreglarse más adelante.
  • Destacando un posible punto problemático.
  • Algo de lo que no estás seguro, una pregunta.

A menudo he preferido una etiqueta más descriptiva como FIXMEo TODOo HACK. XXXA menudo se utiliza como una trampa para todo lo anterior.

La búsqueda de 'XXX' en la referencia cruzada del código de FreeBSD es un buen ejemplo de muchos de los usos. Hay miles...

Stef
fuente
Lo gracioso es que uso esto solo. XXX o #XXX básicamente dispara el compilador y me recuerda volver a algo. Generalmente referencias de puntero o un valor previamente desconocido o nombre de variable.
bobby
55
Esto confirmó mi conjetura original: es simplemente una etiqueta general para indicar que otros programadores resaltan ese comentario como algo para mirar.
Jorge Vargas
No intentar troll, pero "HACK" no es descriptivo. De hecho, es muy ambiguo. Para mí, podría significar al menos 3 cosas.
Ярослав Рахматуллин
2
@ ЯрославРахматуллин en el código fuente Siempre lo leía en el sentido "este es un trabajo de hack feo, pero parece funcionar lo suficientemente bien", algo que te gustaría limpiar más tarde, pero no es urgente. No lo he usado (normalmente lo uso TODOo en su XXXlugar), pero así es como lo interpretaría.
Iiridayn
92
  • NOTE: Descripción de cómo funciona el código (cuando no es evidente).
  • XXX: Advertencia sobre posibles dificultades, se puede utilizar como NOTE:XXX:.
  • HACK: Código no bien escrito o mal formado para evitar un problema / error. Debería usarse como HACK:FIXME:.
  • FIXME: Esto funciona, más o menos, pero podría hacerse mejor. (generalmente código escrito a toda prisa que necesita ser reescrito).
  • BUG: Hay un problema aquí.
  • TODO: No hay problema, pero es necesario escribir código adicional, generalmente cuando omites algo.

Al menos así es como me enseñaron sobre estas etiquetas. Básicamente, los dos primeros ( NOTEy XXX) se utilizan para información y no se requiere ninguna acción. Mientras que los últimos tres ( FIXME, BUGy TODO) requieren acción. HACKestá en algún punto intermedio (y creo que casi nunca se usa).

Peter
fuente
3
Buena lista También me gusta LAZY(no tan crítico como FIXME o HACK) y OCD(sobre ingeniería conocida).
Brendan Byrd
2
¿De verdad usas XXX así? He llegado a ver XXX como una prioridad mucho más alta, lo que significa "esto es algo que debe solucionarse antes de que este código sea sometido a control de revisión". Esa es la forma en que se usa dentro de Google, se aplica automáticamente, por lo que es posible que vea XXX durante la revisión del código, pero es imposible enviar el código hasta que desaparezcan los XXX. Las notas de tareas de larga duración se pueden marcar con TODO, que se pueden enviar siempre que se adjunte el nombre de alguien o una identificación de error.
Don Hatch
21

Algunas notas de una propuesta de mejora de Python de junio de 2005 que fue rechazada .

Elegir entre FIXMEy XXXes difícil.
XXXParece ser más común, pero mucho menos descriptivo.
Además, XXXes un marcador de posición útil en un fragmento de código que
tiene un valor desconocido.

Así FIXMEes la ortografía preferida.
Sun dice eso XXXy FIXMEson ligeramente diferentes, dando XXXmayor severidad.
Sin embargo, con décadas de caos sobre este tema y demasiados millones de
desarrolladores que no se verán influenciados por Sun, es fácil llamarlos sinónimos.


El PEP comienza con,

Este PEP ha sido rechazado. Si bien la comunidad puede estar interesada,
no existe el deseo de hacer que la biblioteca estándar se ajuste a este estándar.

...

¿Qué son las etiquetas de código?

Los programadores utilizan ampliamente las convenciones de marcado de comentarios de código ad-hoc para servir como recordatorios de secciones de código que necesitan una inspección o revisión más detallada. Ejemplos de marcado incluyen FIXME, TODO, XXX, BUG, pero hay muchos más en el amplio uso en el software existente. Tal marcado se denominará en adelante etiquetas de código . Estas etiquetas de código pueden aparecer en el código de la aplicación, pruebas unitarias, scripts, documentación general o donde sea adecuado.


El PEP es una lectura interesante.

nik
fuente
10

Echa un vistazo a PEP350 . Explica todo TODO, XXXetc. Lo uso todos los días cuando no recuerdo exactamente qué significa una de las etiquetas de código.

Ztyx
fuente
1
¿Sabes si PEP350 es el origen de estas etiquetas? ¿Conoces algún documento antiguo (de la era Unix) que describa cómo usar estas etiquetas?
Ярослав Рахматуллин
6

Lo uso XXXporque es más fácil de escribir que TODO.

XXX es para cuando tienes prisa y volverás a esto tú mismo.

TODO es para cuando tienes que entregarlo a otra persona.

S.Lott
fuente
XXX significa "Tengo prisa y volveré a esto yo mismo" TODO significa "Esta es una parte oficial de una futura solicitud de retraso que se asignará a otra persona". Esos son los significados literales.
S.Lott
2
¿Y en qué RFC están esos "significados literales"? ¿O hay alguna otra cita para eso?
Randall
66
@Randall: "cita"? Lo siento, es solo mi entendimiento después de leer mucho código.
S.Lott
3

De las convenciones de código Java (antiguas) :

Use XXX en un comentario para marcar algo que es falso pero que funciona. Use FIXME para marcar algo que es falso y roto.

Martín
fuente
1

XXX es la abreviatura de advertencia que es ligeramente diferente de NOTE pero bastante similar a HACK. Puede ser un error en una biblioteca / código de terceros que se está utilizando y el código con // XXX: indica que es una solución debido a un error en el código de terceros o podría significar "precaución" para alguien que busca / modifica el código para indicar por qué se hace algo de una manera determinada que de otro modo puede parecer incorrecto / poco elegante a primera vista. HACK es un término genérico que significa una solución para un problema que podría estar presente en su propia base de código o en una biblioteca de terceros.

Divick
fuente
0

Creo que while FIXMEes para el desarrollador, y HACKes para el mantenedor, XXXes para el usuario.

Por ejemplo, si ignora XXXy llama a esta función en otro lugar, sin comprender cómo funciona, puede suceder algo inesperado y la persona que se ocupa de este problema será infeliz (al menos el que agregó lo XXXcree). Puede pensar que el problema desaparecerá si simplemente no usa esta función.

Pero para FIXME, te sentirás digno de solo arreglar el código para que funcione. Y para HACK, es posible que no tenga una mejor opción, incluso si no la usa.

Si escribió XXXen su propio código y alguien lo usó, puede sentirse infeliz por razones como que reescribió ese código por completo, y luego se comportó de maneras completamente diferentes y rompió el código de otra persona. Pero si dejaste un FIXMEo TODO, en su lugar, no te importará tanto.

usuario23013
fuente
0

Yo uso // XXX para no tener que recordar los números de línea. En cambio, solo busco el XXX cuando quiero volver a ese fragmento de código.

Agua Azul
fuente