3

我一直在使用 DevExpress CodeRush 和 Refactor!本周 Pro,我选择了一个评论器插件,它会在你输入代码时自动生成评论。

我不想谈论它在挑选基本含义方面做得有多好(实际上非​​常好),但它的默认实现确实提出了一个问题。

默认情况下,键入 } 字符来关闭块将导致插件添加如下注释...

using(MyType myType = new MyType())
{
    myType.doWork();
} // using

(即在打开它的右大括号标签中添加注释。)

虽然我可以看到在某些情况下这种行为可能很有用,但我觉得生成的代码看起来非常不整洁,加上所有额外的注释。

我想知道其他人对这种评论的看法是什么。不仅仅是从学术的角度来看,而且如果我收到大量关于他们的负面评论,我可以决定是将它们强加给我的同事还是将它们剔除。

4

13 回答 13

21

我认为这样的评论毫无用处,除非代码当然很糟糕。通过正确的代码格式,不难看出块的开始位置和块的结束位置,因为通常这些块是缩进的。

编辑:如果一个过程是如此之大以至于不是很明显哪个代码块被大括号封闭,那么无论如何应该已经有更多描述性的注释来描述该过程,而这些注释只会是混乱的。

于 2008-11-27T14:02:50.863 回答
9

我发现从代码中生成注释的插件的想法相当无用。如果它可以由机器推断,那么它也可以由任何阅读它的人推断。这些评论极有可能是完全多余的。

我觉得那些右括号注释很混乱,如果个人需要,它提供的信息最好由 IDE 直接提供。

于 2008-11-27T14:08:20.900 回答
4

IMO 描述代码已经告诉您的内容的每条评论都是不必要的。

如果您的代码块真的很长,以至于您必须滚动很多才能看到那里的开头,那么您做错了,可能会考虑拆分代码。

于 2008-11-27T14:03:47.913 回答
4

Bad bad comment style - 它在代码库中引入了维护开销。

我知道前 VB 编码人员发现}C 语法代码中的 s 线索令人困惑,但在这种情况下,真正的解决方法是重构代码以防止深度嵌套和过长的函数和/或代码块。

于 2008-11-27T14:08:06.097 回答
3

如果 using 块在 IDE 中的页面上扩展,可能很有用,但是您还有其他问题需要担心。在这种情况下,我通过适当的缩进和一个 IDE 来解决问题,当我选择一个匹配的大括号时,它会突出显示匹配的大括号。

一般来说,我不赞成它,但是当您无法避免长时间的阻塞时,它可能会派上用场。

于 2008-11-27T14:04:40.877 回答
3

有时你会得到非常大的代码块,或者很多嵌套在一起的块。我有时会在这种情况下使用这种风格,但绝对不是一直都这样。我也不将其限制为代码:HTML 可以从这种“密切评论”风格中受益匪浅:

<div id="content">
    <div id="columns">
        <div class="column">

            <!-- .. snip a lot of lines .. -->

        </div> <!-- .column -->
    </div> <!-- #columns -->
</div> <!-- #content -->
于 2008-11-27T14:06:30.733 回答
2

这种注释只对有很多嵌套块的很长的代码块有用。但话虽如此,首先不应该是这种情况,因为许多嵌套块和长方法都需要重构。所以我一点也不喜欢这样,因为读者显然可以看到它是什么代码块。

于 2008-11-27T14:05:02.157 回答
2

我认为比注释更有用的是一个 IDE 功能,它不仅可以突出显示匹配的大括号,还可以在工具提示上显示开始行,这样如果您将鼠标悬停在示例中的右大括号上,它会出现“使用( MyType myType = new MyType())" 在工具提示中。

这将使您能够轻松理解大型函数的复杂嵌套大括号,而不会提供持续的视觉混乱。

于 2008-11-27T14:37:06.037 回答
2

我总是觉得记住这一点很有用...

清晰、编写良好的代码将为有能力的程序员提供足够的关于代码正在做什么的解释。

代码中应该留下注释来解释代码为什么这样做!

换句话说,使用注释来帮助你的代码读者理解算法,或者代码应该实现什么,而不是它是如何实现的!

您可能想查看 Jeff Atwood 的这篇文章

于 2008-11-28T12:16:36.510 回答
1

不要这样做,如果在所有地方使用它只会增加噪音,除了适当的缩进应该解决可读性问题。

于 2008-11-27T14:08:34.347 回答
1

我会保持关闭状态。当你有多个块在同一个地方结束(更长或更短的块)时,我只看到使用它的意义 - 在某些情况下我自己使用过它们。但是,如果使用它们,最好在精心选择的位置手动添加它们,而不是使用一些自动工具添加它们。

于 2008-11-27T14:24:34.330 回答
0

如果您必须考虑某种类型的评论是否可用,则很可能是后者。

注释用于解释某些代码块或整个实体,以简化理解;不要使格式更易于阅读。

让插件始终符合这种行为既肥胖又丑陋。

于 2008-11-28T11:37:54.853 回答
0

我同意有更好的方法来描述代码在做什么。

如果您有一长段代码,前面有一条信息性注释,例如 // Fix Work Item,您可以采用该代码并将其重构为自己的方法。然后使用注释作为新方法的名称,FixWorkItem()。这样做是一种使您的代码更具自我记录性的快速方法,甚至可能会揭示一些您以前没有注意到的设计特征。

请留意像这样的单行注释作为潜在的重构,它可以由 IDE 自动处理。记录本身的代码甚至比写得最好的独立注释都要好,当然,在描述意图时除外。

于 2009-03-17T15:50:53.023 回答