代码注释中 # XXX 的含义是什么?

我在代码中见过很多这样的例子,甚至 vim 都将其标记为特殊情况。#TODO#FIXME是另外两个固定标记 vim 高光,但是 #XXX是什么意思?

76793 次浏览

可能是你不知道怎么处理的案子。
看看这个: TODO/FIXME/XXX/HACK 语句的列表视图

alt text
(资料来源: Googleecode.com)

XXX在评论中通常是一个提醒,它可以是:

  • 一些没有完全正确实现的东西。
  • 一些以后需要修理的东西。
  • 突出了一个可能的问题点。
  • 一些你不确定的事,一个问题。

我通常更喜欢更具描述性的标签,如 FIXMETODOHACKXXX经常被用来捕捉以上所有情况。

交叉引用 FreeBSD 代码上搜索“ XXX”是许多用途的一个很好的例子。

一些 被拒绝的2005年6月 Python 增强提议的笔记。

FIXMEXXX之间选择是困难的。
XXX似乎更常见,但描述性要少得多。
此外,XXX是一段代码中非常有用的占位符
具有未知的价值。

因此,FIXME是首选的拼写。
Sun 说,XXXFIXME略有不同,使得 XXX的严重程度更高。
然而,几十年来,这个话题一直处于混乱之中,而且数以百万计
不受 Sun 影响的开发人员,很容易把他们称为同义词。


PEP 的开头是,

这个 PEP 已经被拒绝了。虽然社区可能感兴趣,
不希望使标准图书馆符合这个标准。

...

什么是代码标签?

程序员广泛使用特别代码注释标记约定来服务 作为代码中需要更仔细检查的部分的提醒 标记的例子包括 FIXMETODOXXX、, 但是在现有的软件中广泛使用的还有很多 标记从此被称为 密码标签。这些代码标签 可能出现在应用程序代码、单元测试、脚本、一般 文件,或任何合适的地方。


PEP 是一本有趣的读物。

我使用 XXX是因为它比 TODO更容易输入。

XXX是当你赶时间的时候用的,你自己会回来的。

TODO是当你不得不把它交给别人时使用的。

  • NOTE: 对代码如何工作的描述(当它不是不言自明的时候)。
  • XXX: 关于可能的陷阱的警告,可以作为 NOTE:XXX:使用。
  • HACK: 没有很好的编写或错误的代码来规避问题/bug。应该用作 HACK:FIXME:
  • FIXME: 从某种程度上来说,这是可行的,但是可以做得更好。(通常代码写得很匆忙,需要重写)。
  • 这里有个问题。
  • TODO: 没问题,但是需要编写额外的代码,通常是在跳过某些内容时。

至少我是这么被教导这些标签的。基本上前两个(NOTEXXX)用于信息,不需要操作。而最后三个(FIXMEBUGTODO)确实需要采取行动。HACK介于两者之间(我认为它几乎从未使用过?).

XXX 是警告的简称,它与 NOTE 略有不同,但与 HACK 非常相似。它可能是在第三方库/正在使用的代码和//XXX: 的代码中的一个错误,表明或者它是由于第三方代码中的错误,或者它可能意味着“警告”有人查看/修改代码,以表明为什么某些事情是以某种方式完成的,否则可能看起来不正确/不雅观的第一眼。HACK 是一个通用术语,意思是针对可能出现在您自己的代码库或第三方库中的问题的解决方案。

我相信,虽然 FIXME是为开发人员准备的,而 HACK是为维护人员准备的,但 XXX是为用户准备的。

例如,如果您忽略 XXX并在其他地方调用这个函数,而不理解它是如何工作的,那么可能会发生一些意想不到的事情,处理这个问题的人会不高兴(至少添加 XXX的人是这么认为的)。您可能认为如果不使用这个函数,问题就会消失。

但是对于 FIXME,您会觉得仅仅修复代码来使其工作是值得的。对于 HACK,即使你不使用它,你也没有更好的选择。

如果你用自己的代码编写了 XXX,有人使用了它,你可能会因为一些原因感到不高兴,比如你完全重写了那段代码,然后它以完全不同的方式运行,你破坏了别人的代码。但是如果你留下的是 FIXME或者 TODO,你就不会那么在意了。

看看 PEP350。它解释了所有的 TODOXXX等。我每天都用它,当我不记得其中一个代码标签到底是什么意思的时候。

来自(旧版) Java 代码约定:

在评论中使用 XXX 标记一些虚假但有效的内容。使用 FIXME 标记虚假和破碎的东西。

我使用//XXX,所以我不必记住行号。相反,当我想返回到那段代码时,我只需要搜索 XXX。