您是否在代码注释中写标题?[关闭]


17

我正在浏览我写的一些旧代码(在大学一年级),发现我以前在代码的各个部分之前都写过注释标题。像这样的东西(这是来自“大富翁”游戏):

/*Board initialization*/
...code...

/*Player initialization*/
...code...

/*Game logic starts here*/
/*Displaying current situation*/
...code...

/*Executing move*/
...code...

/*Handle special event*/
...code...

/*Commit changes, switch to next player*/
...code...

如果代码非常清晰,这可能是多余的,并且可以说是不必要的,但是当我浏览文件时,即使我几乎不看实际的代码,我也以为我知道发生了什么,这让我感到非常惊讶。在某些情况下,我绝对可以认为这很合适,所以我想知道-您这样做吗?您认为这是个好主意吗?还是太多?

Answers:


24

这是代码的味道。这说明了什么,而不是为什么

如果有必要,请将代码拆分为小函数。


4
使函数具有功能没有意义。
保罗·内森

30
是正确的:如果代码应提供类似的注释/*Board initialization*/,则可能应该在名为的函数中InitializeBoard。如果您的代码结构足够清晰,那么您将不需要注释。
蒂姆·罗宾逊

3
“内容”是很好的了解,并且从查看代码中通常并不明显。这些评论使总体意图清晰。
2010年

4
@DarenW-但是函数/过程/方法也是如此。后者具有将代码模块化的额外好处,这使它更易于理解
斯蒂芬·C

3
这样做的另一个好处是,诸如InitializeBoard或的功能InitializePlayer将出现在大多数IDE的功能/模块/类浏览器列表中,而注释则不会。导航更轻松。
史蒂夫·福洛斯

13

我一直都这样。既可以标记代码在做什么,也可以像您所说的那样更重要,以便于扫描和查找代码块。有时候,我也会在注释中写下一个涉及的过程,并在注释下“填写”代码。


7
+1-清晰是一件好事。我不同意已批准的答案,因为这是一种代码味道。如果它增加清晰度-做到这一点。
quick_now 2011年

2
如果它违反了OAOO,则不要这样做。这是多余的,并且往往与它记录的代码不同步。将代码放入函数中,并以函数的名称命名。现代IDE使更改函数名称和更新所有引用变得容易。这样,所有实例都保持最新状态。
Scott Whitlock

3
向我+1。在大型代码文件中,我不仅仅希望使用空格分隔逻辑部分。是的,我认为如果您的函数很糟糕,那么您需要对其进行拆分,但是如果各部分之间用注释分隔,我会更容易阅读。
安东尼

6

我发现有趣的是,有多少人不喜欢这种做法,却无法真正阐明原因。像这样的评论被皱眉的原因是它们表明您违反了单一责任原则。该特定名称通常仅在OO上下文中使用,但一般概念也称为内聚,适用于其他范式。学校通常要等到学位课程结束时才教授这类设计原则。实际上,一些老师要求违反它,以便通过将所有内容塞进一个文件中来使事情更容易分级。因此,您大一的无知是可以原谅的,在这种情况下,您发现“某事”错误并试图通过注释进行澄清的事实甚至值得称赞,但总的来说,修复一个不清楚的设计而不是尝试在注释上加以覆盖是更好的选择。


4

我将这些内容视为使代码更清晰的一种方法。如果您可以根据文件中的方法判断每个部分是什么,那么就不需要了,但是如果您必须具有多个部分,那么它很有用。也许当代码文件太大时,需要将其分解,这可能会减少对此类注释的需求。

我想说的是,如果在团队中共同制定一个标准,那么至少你们所有人都以相同的方式进行编码和注释,因此查看代码变得更加容易。


3

之所以这样做,是因为我经常与自己交流意图,或者本质上是为诸如“数据清理从此处开始”之类的内容添加方便的书签。通常在该标题下会简要介绍我在做什么以及为什么这样做的逻辑。

我喜欢冗余。如果由于某种原因而丢失了我的实验室笔记本,或者不得不重新阅读我几年前编写的代码,那么我不喜欢将自己正在做的事情以及为什么要做的事情汇总在一起。如果代码中至少包含某些逻辑,则其文档已足够使我至少可以再次使用它。

我认为我对它的偏爱部分是因为我的编程相当一部分是统计性的,因此有些重复。尽管可能有几段代码需要搜索一个有用的命名函数,但是我可能有数十种相当相似的用法,例如通用线性模型函数。能够找出其中哪些是“结果对选择A与选择B或C的敏感程度”,还有哪些是有用的。这通常会因标题而加快。


陈述商业目的/高层目的的评论非常值得。它们使确认和支持理解成为可能。单元测试也可以被认为是多余的-我建议记录和理解代码至少与测试一样重要。
Thomas W

2

我认为这在具有大量功能的巨大源文件的情况下很有用,您可以将它们松散地组织成这样的块。我并不是说我喜欢比更小,更集中的源文件更好的选择...

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.