代码注释中的#XXX是什么意思?


126

我在代码中看到了很多,甚至vim都将其标记为特例。#TODO#FIXME另外两个固定标记Vim高亮但到底是什么#XXX意思?


7
问题是询问代码标记或评论Python编程中的最佳实践。有关于此主题的Python增强提案讨论。这个问题应该保留在SO上。它的措词可能会好一些。
NIK

Answers:


140

XXX在评论中通常是平淡无奇的。它可能是:

  • 未完全正确实施的操作。
  • 稍后应解决的问题。
  • 突出显示可能的问题点。
  • 您不确定的问题。

我通常更喜欢使用更具描述性的标签,例如FIXMETODOHACKXXX通常被用作上述所有内容的捕获。

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


有趣的是我自己使用它。XXX或#XXX基本上会使编译器跳闸,并提醒我重新进行一些操作。通常,指针引用或先前未知的值或变量名称。
bobby

5
这证实了我最初的猜测,这只是一个全能标记,以指示其他程序员强调该注释以供查看。
豪尔赫·巴尔加斯

没有尝试巨魔,但是“ HACK”不是描述性的。实际上,这是非常模糊的。对我来说,这可能意味着至少三件事。
ЯрославРахматуллин

2
源代码中的@ЯрославРахматуллин我总是会以“这是一个难看的hack作业,但似乎工作得很好”的意义来阅读它-您想稍后进行清理,但并不紧急。我没有使用过它(我通常使用TODOXXX代替),但这就是我要解释的方式。
Iiridayn

92
  • NOTE:说明代码的工作方式(当它不明显时)。
  • XXX:有关可能存在陷阱的警告,可以用作NOTE:XXX:
  • HACK:编写得不好或格式错误的代码来规避问题/错误。应该用作HACK:FIXME:
  • FIXME:可以,但是可以做得更好。(通常急着写的代码需要重写)。
  • BUG:这里有问题。
  • TODO:没问题,但是通常在跳过某些内容时需要编写其他代码。

至少这是关于这些标签的教学方法。基本上,前两个(NOTEXXX)用于提供信息,不需要任何操作。虽然最后三个(FIXMEBUGTODO)确实需要采取行动。HACK在两者之间(我想几乎没有用过?)。


3
好清单。我也喜欢LAZY(不如FIXME或HACK那么重要)和OCD(已知过度工程)。
布伦丹·伯德

2
您真的这样使用XXX吗?我已经看到XXX具有更高的优先级,这意味着“在将此代码甚至提交给修订控制之前,必须先解决此问题”。这是在Google内部自动执行的方式,因此您可能会在代码检查期间看到XXX,但是只有在XXX消失后才能提交代码。可以使用TODO
唐·哈奇

21

2005年6月的Python增强建议中的一些注释被拒绝

FIXME和之间进行选择XXX很困难。
XXX似乎更常见,但描述性却差很多。
此外,XXX在代码中
具有未知值的有用占位符。

因此FIXME是首选的拼写。
孙说,XXXFIXME略有不同,给予XXX更高的严重程度。
但是,由于数十年来在该主题上的混乱,以及数百万
不受Sun影响的开发人员,很容易正确地将其称为同义词。


PEP开始于

该PEP已被拒绝。尽管社区可能对此感兴趣,
但是并没有希望使标准库符合该标准。

...

什么是代码标签?

程序员广泛使用即席代码注释标记约定,以提醒需要仔细检查或查看的代码部分。标记的实例包括FIXMETODOXXXBUG,但更多的在现有的软件广泛使用。此后,这种标记将称为代码标签。这些代码标签可以显示在应用程序代码,单元测试,脚本,常规文档中或任何合适的位置。


PEP是有趣的读物。


10

看看PEP350。它解释了所有TODOXXX等等。当我不记得确切的代码标签是什么意思时,我每天都会使用它。


1
您是否知道PEP350是这些标签的来源?您知道(从Unix时代起)任何较旧的文档描述了如何使用这些标签吗?
ЯрославРахматуллин

6

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

XXX 适用于您急忙时会自己解决的问题。

TODO 用于当您必须将其移交给其他人时。


XXX的意思是“我很着急,我会自己回复的。” TODO的意思是“这是将来积压的请求中的一部分,将分配给其他人。” 这些是字面意思。
S.Lott

2
这些“文字含义”包含在哪个RFC中?还是有其他引用吗?
兰德尔

6
@Randall:“引用”?抱歉,这是我阅读了大量代码后的理解。
S.Lott


3

来自(旧)Java代码约定

在评论中使用XXX标记虚假但有效的内容。使用FIXME标记虚假和损坏的内容。


1

XXX是警告的简称,与NOTE稍有不同,但与HACK非常相似。它可能是正在使用的第三方库/代码中的错误,并且带有// XXX的代码:表示这是由于第三方代码中的错误而导致的解决方法,或者可能对正在查找/修改的人表示“注意”指示为什么以某种方式完成某件事的代码,否则乍一看似乎不正确/不雅。HACK是通用术语,表示您自己的代码库或第三方库中可能存在的问题的解决方法。


0

我相信while FIXME是给开发者的,HACK给维护者的,XXX是给用户的。

例如,如果您忽略了,XXX然后在其他地方调用此函数,而又不了解其工作原理,则可能会发生意外情况,并且处理此问题的人会很不高兴(至少是添加了该功能的人)XXX想法的人)。您可能会认为,如果不使用此功能,问题将消失。

但是对于FIXME,您将只需要修复代码以使其工作就值得。而对于HACK,即使您不使用它,也可能没有更好的选择。

如果您XXX是使用自己的代码编写的并且有人使用过的,则您可能会因为完全重写该代码,然后以完全不同的方式工作,并且破坏了别人的代码等原因而感到不满意。但是,如果您留下一个FIXMETODO相反,您将不会在乎。


0

我使用// XXX,因此不必记住行号。相反,当我想返回该段代码时,我只是搜索XXX。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.