I was just wandering why is the prefix XXX
?
As far as I know its used for notes/reminders (or at least this is what I use it for and that is what the people on most of the links I googled use it for).
So does anyone know where the XXX
prefix come from ?
From the Hacker's Dictionary entry for "XXX":
A marker that attention is needed.
Commonly used in program comments to
indicate areas that are kluged up or
need to be. Some hackers liken `XXX'
to the notional heavy-porn movie
rating. Compare FIXME.
From Sun/Oracle's Java code conventions, section 10.5.4:
Use XXX in a comment to flag something that is bogus but works. Use FIXME to flag something that is bogus and broken.
XXX
, along with FIXME
and TODO
, is known in Eclipse as a task tag, and is indexed by the IDE to let you find the spots marked with those tags easily. You can edit such tags in the Eclipse Preferences -> Java -> Compiler -> Task Tags.
As to where it comes from: it probably emerged form the "tags" that programmers spontaneously wrote in their code to quickly mark a given line. While FIXME and TODO are explicit enough, the reason XXX was used could be a combination of these reasons:
- The string "XXX" does not usually occur in regular source code and is easy to look for with tools such as grep or a simple text search in an editor;
- Traditionally, "X marks the spot" which needs attention; triple X even more so;
- The X key is very close to the Command/Alt/Windows keys and is easy to reach, being on the lower row of the keyboard.
I can't think of anything else...
I've worked with a team where XXX
was used to point out a "bug or task that was not yet entered in Trac.". After it was entered in Trac the comment would be changed to TODO
with the ID appended.
To Eclipse though, it's just a marker like TODO
and FIXME
. I imagine that it's originally used as a strong form of TODO
. You usually see comments like this:
// TODO: Need to optimize this once n becomes greater than 1000.
But sometimes you'll have a comment like:
// TODO: Fix SQL injection bug before production release!
Unfortunately a quick grep
wont make that SQL injection bug stand out among the 1000s of other TODO
s. Using XXX here would help mark things that must be done before a milestone/release etc.
There's also a reference to it on Wikipedia:
XXX to warn other programmers of problematic or misguiding code.