你见过的最不实用的评论是什么?

时间:2008-09-27 11:11:00

标签: coding-style comments

我们都知道,评论我们的代码是编码风格的一个重要部分,可以让我们的代码可以理解为下一个人,或者甚至是我们在6个月左右的时间。

然而,有时评论只是不会削减芥末。我不是在谈论明显的笑话或排泄沮丧,我说的是那些似乎试图解释的评论,但这样做很差,他们可能也不会在那里。 太短的评论,过于神秘,或者只是错误

作为一个故事,你能否分享一些你曾经看过的那些那么糟糕的东西,如果不是很明显,请展示它所指的代码并指出它有什么问题? 应该代替什么?

另见:

101 个答案:

答案 0 :(得分:112)

只是典型的Comp Sci 101类型注释:

$i = 0; //set i to 0

$i++; //use sneaky trick to add 1 to i!

if ($i==$j) { // I made sure to use == rather than = here to avoid a bug

那种事。

答案 1 :(得分:75)

未填充的javadoc样板评论特别无用。他们消耗了大量的屏幕空间而没有贡献任何有用的东西。最糟糕的是,如果出现这样的评论,其他数百个肯定会潜伏在其中。

/**
 * Method declaration
 *
 *
 * @param table
 * @param row
 *
 * @throws SQLException
 */
void addTransactionDelete(Table table, Object row[]) throws SQLException {

答案 2 :(得分:53)

我发现自己在写这个小宝石之前:

//@TODO: Rewrite this, it sucks. Seriously.

通常,这是一个好兆头,我已经到了编码会议结束的那一晚。

答案 3 :(得分:51)

// remember to comment code

跆拳道? :d

答案 4 :(得分:42)

这样的事情:

// This method takes two integer values and adds them together via the built-in
// .NET functionality. It would be possible to code the arithmetic function
// by hand, but since .NET provides it, that would be a waste of time
private int Add(int i, int j) // i is the first value, j is the second value
{
    // add the numbers together using the .NET "+" operator
    int z = i + j;

    // return the value to the calling function
    // return z;

    // this code was updated to simplify the return statement, eliminating the need
    // for a separate variable.
    // this statement performs the add functionality using the + operator on the two
    // parameter values, and then returns the result to the calling function
    return i + j;
}

等等。

答案 5 :(得分:41)

每一条只重复代码所说的评论都是无用的。评论不应该告诉我代码的作用。如果我不太了解编程语言,只需阅读代码就能理解正在发生的事情,我根本不应该阅读那些代码。像

这样的评论
// Increase i by one
i++;

完全没用。我看到我增加了一个,这就是代码所说的,我不需要对此进行评论!评论应该用于解释为什么某些事情已经完成(如果它远非明显)或为什么某些事情是以这种方式完成而不是任何其他方式(所以我可以理解另一个程序员做出的某些设计决策,这些决策到目前为止并不明显)。进一步的注释对于解释棘手的代码很有用,因为通过快速查看代码绝对不可能确定发生了什么(例如,有一些棘手的算法可以计算数字中设置的位数;如果不是知道这个代码做了什么,你没有机会猜测那里发生了什么。)

答案 6 :(得分:38)

Thread.Sleep(1000); // this will fix .NET's crappy threading implementation

答案 7 :(得分:37)

我曾经在一个带有奇怪的C编译器的项目上工作过。除非在两个语句之间插入注释,否则它会对有效代码产生错误。所以我把评论改为:

// Do not remove this comment else compilation will fail.

它运作得很好。

答案 8 :(得分:29)

我不相信。在得到22个答案之后我才提出这个问题,没有人指出最不可能有用的评论类型:

错误的评论。

人们编写多余的评论会妨碍理解代码,但是当有人写出详细的评论来解释某些内容是如何工作的时候,并且它首先是错误的,或者代码更改后的错误而不改变评论(更可能的情况),这绝对是最糟糕的评论。

答案 9 :(得分:25)

GhostDoc独自提出了一些非常有趣的内容。

/// <summary>
/// Toes the foo.
/// </summary>
/// <returns></returns>
public Foo ToFoo()

答案 10 :(得分:23)

// secret sauce

答案 11 :(得分:21)

// Don't know why we have to do this

答案 12 :(得分:20)

try
{
...some code...
}
catch
{
// Just don't crash, it wasn't that important anyway.
}

*叹

答案 13 :(得分:18)

遇到过一次文件。成千上万的代码行,其中大部分代码都非常可怕。错误命名的变量,循环上的棘手条件和埋在文件中间的一条注释。


   /* Hmmm. A bit tricky. */

答案 14 :(得分:16)

//' OOOO oooo that smell!! Can't you smell that smell!??!??!!!!11!??/!!!!!1!!!!!!1

If Not Me.CurrentMenuItem.Parent Is Nothing Then
    For Each childMenuItem As MenuItem In aMenuItem.Children
        do something
    Next

    If Not Me.CurrentMenuItem.Parent.Parent Is Nothing Then
        //'item is at least a grand child
        For Each childMenuItem As MenuItem In aMenuItem.Children
            For Each grandchildMenuItem As MenuItem In childMenuItem.Children
                do something
            Next
        Next

        If Not Me.CurrentMenuItem.Parent.Parent.Parent Is Nothing Then
            //'item is at least a grand grand child
            For Each childMenuItem As MenuItem In aMenuItem.Children
                For Each grandchildMenuItem As MenuItem In childMenuItem.Children
                    For Each grandgrandchildMenuItem As MenuItem In grandchildMenuItem.Children
                        do something
                    Next
                Next
            Next

        End If
    End If
End If

答案 15 :(得分:15)

IDE插入的默认注释。

我使用WebSphere Application Developer的最后一个项目有很多维护开发人员和承包商,他们似乎并没有被数百个(如果不是数千个)包含类似内容的Java类所困扰:

/**
 * @author SomeUserWhoShouldKnowBetter
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */

在认为你实际上找到一个评论良好的源文件并意识到这一点之间总是存在分秒,是的,这是另一个默认评论,它迫使你使用SWEAR_WORD_OF_CHOICE

答案 16 :(得分:15)

我昨天在C#app中看到了这条评论:

//TODO: Remove this comment.

答案 17 :(得分:13)

我最喜欢的评论。

/* our second do loop */
do {

无论是谁写的 - 你都知道你是谁。

答案 18 :(得分:11)

很多年前,C语言中的一个非常大的数据库引擎项目 - 数千行代码,包含短的和拼写错误的变量名,没有注释......直到嵌套if-conditions深入到模块的数千行中以下评论出现:

//if you get here then you really f**ked
到那个时候,我想我们已经知道了!

答案 19 :(得分:10)

在一个巨大的VB5应用程序中

dim J
J = 0 'magic
J = J 'more magic
for J=1 to 100
...do stuff...

引用显然是THIS ...是的,没有这两行的应用程序在运行时因未知错误代码而失败。我们仍然不知道为什么。

答案 20 :(得分:10)

取自blog posts之一:

  

在清理我管理的其中一个项目的部分源代码的过程中,我发现了以下评论:

/*
   MAB 08-05-2004: Who wrote this routine? When did they do it? Who should 
   I call if I have questions about it? It's worth it to have a good header
   here. It should helps to set context, it should identify the author 
   (hero or culprit!), including contact information, so that anyone who has
   questions can call or email. It's useful to have the date noted, and a 
   brief statement of intention. On the other hand, this isn't meant to be 
   busy work; it's meant to make maintenance easier--so don't go overboard.

   One other good reason to put your name on it: take credit! This is your
   craft
*/

然后再往下走一点:

#include "xxxMsg.h" // xxx messages
/*
   MAB 08-05-2004: With respect to the comment above, I gathered that
   from the filename. I think I need either more or less here. For one
   thing, xxxMsg.h is automatically generated from the .mc file. That might
   be interesting information. Another thing is that xxxMsg.h should NOT be
   added to source control, because it's auto-generated. Alternatively, 
   don't bother with a comment at all.
*/

然后又一次:

/*
   MAB 08-05-2004: Defining a keyword?? This seems problemmatic [sic],
   in principle if not in practice. Is this a common idiom? 
*/

答案 21 :(得分:10)

AHHHRRRGGHHH刚刚在一些古老的代码中找到了这个,打赌这家伙认为他很有趣

private
  //PRIVATE means PRIVATE so no comments for you
  function LoadIt(IntID: Integer): Integer;

答案 22 :(得分:9)

最糟糕的评论是对代码的作用给出了错误的解释。 这比没有评论更糟糕。

我在代码中看到过这样的东西有太多的注释(不应该存在,因为代码本身就足够清晰了),并且它主要发生在代码更新时(重构,修改,等)但评论不会随之更新。

一个好的经验法则是:只写评论来解释为什么代码正在做某事,而不是

答案 23 :(得分:8)

肯定必须是代替错误处理的注释。

if(some_condition){
    do_stuff();
}
else{
    //An error occurred!
}

答案 24 :(得分:8)

我刚发现这个,在注释掉的代码行之前就写在了这一行:

//This causes a crash for some reason. I know the real reason but it doesn't fit on this line.

答案 25 :(得分:7)

从vb6移植到vb.net的100k LOC应用程序。看起来好像以前的开发人员在一个方法上放置了一个注释标题,然后将确切的注释复制并粘贴到他从那时起编写的每个方法上。数百种方法,每一种都错误评论......

当我第一次看到它时,我笑了...... 6个月后,这个笑话很薄。

答案 26 :(得分:7)

这是数据库触发器的绝对真实示例:

/******************************************************************************
   NAME:       (repeat the trigger name)
   PURPOSE:    To perform work as each row is inserted or updated.
   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        27.6.2000             1. Created this trigger.
   PARAMETERS:
   INPUT:
   OUTPUT:
   RETURNED VALUE:
   CALLED BY:
   CALLS:
   EXAMPLE USE:
   ASSUMPTIONS:
   LIMITATIONS:
   ALGORITHM:
   NOTES:
******************************************************************************/

答案 27 :(得分:6)

/** function header comments required to pass checkstyle */

答案 28 :(得分:5)

我见过的两个最无益的评论......

try
{
  ...
}
catch
{
  // TODO: something catchy
}

我也在Daily WTF上发布了这个,所以我将其修改为评论......

  // TODO: The following if block should be reduced to one return statememt:
  // return Regex.IsMatch(strTest, NAME_CHARS);
  if (!Regex.IsMatch(strTest, NAME_CHARS))
    return false;
  else
    return true;

答案 29 :(得分:5)

我从未发现过非常有帮助的人:

<!--- Lasciate ogne speranza, voi ch'intrate --->

答案 30 :(得分:4)

  

只是典型的Comp Sci 101类型注释:

如果他们在任务中做过这样的话,我就会随机采取极端暴力行为来威胁我的学生。他们仍然。然而,适当缩进的感觉似乎完全丧失了。我想是为了说明为什么Python会成为初学者的理想语言。

答案 31 :(得分:4)

自动javadoc工具生成的注释(例如JAutoDoc)。我有一个团队成员提交了大量的代码,评论如下:

/**
 * Gets the something
 *
 * @param num The num
 * @param offset The offset
 */
public void getSomething(int num, bool offset)

作为一个起点,它可能是有用的,但根据定义,如果程序正在解析变量和方法名称以进行其注释,那么它就不会有用了。

答案 32 :(得分:4)

每当我用C ++或Java教授OOP时,我通常都会得到以下结果:

// My class!
Class myclass 
{
    //Default constructor
    public myClass()
    {
       ...
    }
}

我的政策是向学生宣布他们会因文件不足和多余而失去分数

答案 33 :(得分:4)

我有很多这些:

# For each pose in the document
doc.elements.each('//pose') do |pose| ...

# For each sprite in sprites
@sprites.each do |sprite| ...

# For each X in Y
for X in Y do ...
但是,我试图削减它。 :(

答案 34 :(得分:4)

#include <stdio.h>
//why isn't this working!

使用仅支持/*-style */全局注释的c编译器。

答案 35 :(得分:4)

我们正在维护糟糕的PHP应用程序,而原始开发人员习惯于将“调试代码”留在这个位置。正如他一直所说,这是因为“如果他再次需要他们,他只是取消他们的评价,瞧,这样可以为他节省很多工作。”

因此,所有脚本都充斥着如下行:

//echo "asdfada";
//echo $query."afadfadf";

它们实际上都没有任何功能。它们主要用于确认代码执行到达那一点。

在相关的说明中,他从未删除任何过时的脚本或数据库表。所以我们的目录中充满了dosomething.php,dosomething1.php,dosomething1.bak,dosomething1.bak.php等文件......每个人都害怕删除任何内容,因为没有人知道,真正使用的是什么。

答案 36 :(得分:3)

我的研究涉及API可用性,我遇到了很多不好的评论,仅仅因为它们具有误导性,错位,不正确或不完整。

例如,在Java Messaging Service(JMS或J2EE中)中,QueueReceiver.receive类包含以下gem: “此调用将阻塞,直到消息到达,超时到期或此消息使用者关闭。超时为零永不过期,并且调用无限期阻塞。”

听起来不错?对?

问题是,正如我的实验室研究表明的那样,用户认为评论涵盖了所有内容。面对没有收到消息的情况,他们拒绝在别处寻找解释。

在这种情况下,当您从QueueConnectionFactory创建QueueConnection时,它会告诉您在调用start之前不会传递消息。但这并没有出现在接收方法中。

我相信如果那条线不存在,更多人会在其他地方寻找它。

顺便说一下,我的研究总体上讨论了JavaDoc的可用性,以及人们是否真的在JavaDocs中找到了重要的指令。如果有人想看看,相关的是here

答案 37 :(得分:3)

我有这样做的坏习惯,特别是当我在滚动时:

// TODO: Documentation.

答案 38 :(得分:3)

非常大的源文件,在单个进程中实现多线程。在所有调用堆栈切换和信号量抓取以及线程暂停和恢复过程中,有一个关于指针操作特别模糊的简单注释:

/* Trickiness */

哎呀,谢谢分享。

答案 39 :(得分:3)

无关的评论中断。通常情况下,如果存在逻辑上的流分离,则需要注释:

/***************************************************************************/

上面和下面的代码部分可能会有所帮助。当你需要稍后返回并将一个大型函数(从小开始)拆分为几个较小的函数以保持代码易于阅读时,它也很不错。

一位前程序员,仍然无名,决定添加以下两行:

//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

每一行代码后

答案 40 :(得分:3)

我在某些代码中看到以下评论:

//I know that this is very ugly, but I am tired and in a hurry. 
//You would do the same if you were me...
//...
//[A piece of nasty code here]

答案 41 :(得分:3)

以下是我的两个最爱:

                // do nothing

这并没有多大帮助,因为它占用空间。

然后继续前进:

        // TODO: DAN to fix this.  Not Wes.  No sir.  Not Wes.

我想如果我不是Dan或Wes,我应该忽略它,对吧?

答案 42 :(得分:3)

cntrVal = ""+ toInteger(cntrVal)      //<---MAYBE THIS IS THE WAY I'M GOING THROUGH CHANGES (comin' up comin' up) THIS IS THE WAY I WANNA LIVE

这是一首E型歌曲的歌词......

答案 43 :(得分:3)

过多的冗余并不能说明发生了什么。 这个来自手机固件

/*========================================================================

FUNCTION 
    DtFld_SetMin

DESCRIPTION
    This local function sets a nMin member of the Dtfld struct.

DEPENDENCIES
    None

ARGUMENTS
    [in]me
        Pointer to the Dtfld struct.
    [in]val
        Value to set

RETURN VALUE
    None.

SIDE EFFECTS
    None

NOTE
    None
========================================================================*/
/**
 @brief This local function sets a nMin member of the Dtfld struct..
 @param [in] me  Pointer to the Dtfld struct.
 @param [in]val Value to set
 @retval None 
 @note None
 @see None
*/

static __inline void DtFld_SetMin(DtFld *me, int val)
{
  me->nMin = val;
}

答案 44 :(得分:3)

// initialise the static variable to 0
count = 1;

答案 45 :(得分:2)

不是一个评论,而是来自描述我曾经不得不使用的系统的API的JavaDoc。

setAttribute(attributeName, attributeValue)
Sets an attribute

没有任何地方记录属性是什么(它们不是HTML / XML / etc属性),存在什么属性或者它们可能具有什么值。

答案 46 :(得分:2)

/* FIXME: documentation for the bellow functionality - and why are we doing it this way */

这是会计应用程序的一个庞大的统计程序。我们从来没有弄明白她为什么这样做 - 错误的方式。但我们不得不重写它,并为客户支付罚款。

答案 47 :(得分:2)

// Magic
menu.Visible = False
menu.Visible = True

这是我用过的一些PowerBuilder代码中的UI框架。框架动态创建菜单项(来自数据库数据)。但是,当PowerBuilder从16位升级到32位时,菜单代码停止工作。首席开发人员以某种方式确定隐藏菜单然后显示它导致它正确显示。

答案 48 :(得分:2)

曾几何时,我看到了:

#region This is ugly but a mas has to do what a man has to do
Initialization of a gigantic array (...)
#endregion 
// Aren't you glad this has ended?

我很高兴我不是那个开发人员。

答案 49 :(得分:2)

我很惊讶之前没有人发布这样的。

 #contentWrapper{
  position:absolute;
  top: 150px; /*80 = 30 + 50 where 50 is margin and 30 is the height of the header*/
 }

简单错误的评论是最糟糕的评论。

答案 50 :(得分:2)

//祝你好运

答案 51 :(得分:2)

/// <summary>
/// Disables the web part. (Virtual method)
/// </summary>
public virtual void EnableWebPart() { /* nothing - you have to override it */ }

答案 52 :(得分:2)

我用两种语言工作,(英语和法语),但我最喜欢的评论是法语:

/* La passe du coyote qui tousse */

翻译它会得到这样的东西:

/* The coughing coyote trick */

它通常代表一段代码,或者对作者来说似乎是一个聪明的想法,并且完全模糊不清,或者它是一个奇怪的错误修正,甚至作者也不理解它为什么起作用(想想通过移动if语句来修复竞争条件周围)。在所有情况下,编写糟糕的代码都会吓到任何不得不重构它的人,因为很难预测更改它的效果。

答案 53 :(得分:2)

add ax,1 ;add 1 to the accumulator

严重?那段评论浪费了我生命中的5秒。

也有过时的评论FTL

//the system can only handle 5 people right now. make sure where not over
if(num_people>20){ 

答案 54 :(得分:2)

我遇到过的最有趣的事情之一。

// HACK HACK HACK. REMOVE THIS ONCE MARLETT IS AROUND

让我惊讶的一个。

// this is a comment - don't delete

答案 55 :(得分:2)

// yes, this is going to break in 2089, but, one, I'll be dead, and two, we really ought to be using
// a different system by then
if (yearPart >= 89)
{
    // naughty bits removed....
}

(评论没有用,但两者都是真实的陈述。)

答案 56 :(得分:2)

我刚刚在一个INI文件中看到了这个软件(不久前我的一个软件中的一个)我正在维护:

;--- if LOGERR=1, errors are logged but debugging is difficult
;--- if LOGERR=0, errors are not logged but debugging is easy
LOGERR=1

嗯,调试确实很难,但我不敢改变设置。

答案 57 :(得分:1)

我删除了名称以避免尴尬,但这是在某些生产代码中发现的评论。不幸的是,由于这是ASP代码,指的是一个VB6模块,并且客户非常好奇,所以当我在咨询访问期间在现场时,她指出了我的评论。幸运的是,她对此有一种幽默感。

  

'我不知道这个@“%&amp;”是如何工作的。这是一个由&amp;£   承包商---------。
  我会把它留在原地,希望没有人需要改变它。

不幸的是,对于我来说,代码确实需要在一年后更改,此时我们发现我们没有源代码并且不得不将其垃圾并免费重写。

答案 58 :(得分:1)

我不得不说我遇到的最不实用的评论类型是第二语言评论。

我宁愿看到用某人的母语清楚地写出的评论,而不是用非常差的英语写作。至少那个语言的母语人士可以翻译它。 ESL评论对于地球上的每个人来说都是不可读的,除了写作者,有时甚至不是他们。

答案 59 :(得分:1)

从遗留代码中获取,这是对以下if条件目的的唯一描述(条件跨越了120行的4行):

#-- Whoa, now that's a big if condition.

答案 60 :(得分:1)

从内存中引用它可能不准确。

  

我不知道f * ck这是做什么的,但它似乎有效,所以我没有触及它。

有趣的是我发现它的方式。此评论嵌入在我们公司的一些开发人员为客户编写并在MDB中分发的访问应用程序中。不幸的是,“似乎工作”的代码被轰炸,Access尽职地打开代码窗口,调试器突出显示评论下方的行。它并没有完全激发对该客户的信心。

答案 61 :(得分:1)

某人的姓名或缩写,就是这样。有时这些签名定义了一段代码......

//SFD Start
...code...
//SFD End

就像代码是这样的艺术品他们必须签名!另外,如果其他人需要更改以这种方式标记的代码呢?

这不应该与源控制系统中的“责备”或“注释”功能混淆 - 它们摇滚!

答案 62 :(得分:1)

今天穿过一个doozy。鉴于它是excel工作簿中的VBA宏的一部分,我应该预料到它。

a.writeline s 'write line

我觉得特别迷人的是,写这篇文章的人花时间写了一个评论,用一个空间来清理令人难以置信的混乱的“写作线”命令,但没有发现有必要使用有意义的变量名。最好我可以告诉a是“a file”的缩写,s是“a String”的缩写(因为“a”已经被拍摄)。

答案 63 :(得分:1)

随机地,在代码中间:

//???

答案 64 :(得分:1)

if (someFlag)
{
    // YES
    DoSomething();
}
else
{
    // NO
    DoSomethingElse();
}

有一个人经常这样做,团队的其他成员最终说服他停止这样做!

答案 65 :(得分:1)

此:

Yup,一个空格,作为subversion更改日志。

答案 66 :(得分:1)

我在地图产品的示例应用程序中找到了这个:

// Return value does not matter
return 0;

答案 67 :(得分:1)

我在一个扭曲的程序中找到了这个

# Let them send messages to the world
#del self.irc_PRIVMSG  # By deleting the method? Hello?

答案 68 :(得分:1)

/**
 * Implements the PaymentType interface.
 */
public class PaymentTypePo implements PaymentType

答案 69 :(得分:1)

我曾经和一位非常有才华的汇编语言程序员合作过,他使用了许多宏来扩充基本的ARM指令集。他的代码由成千上万的指令组成,看起来像下面这样 - 用宏指令我(一个称职的ARM程序员)无法读取???以及偶尔的常规ARM指令,如ADD:

...
??? R0,R0,#1
??? R0,R1
ADD R0,R0,#6    ; Add 6
??? R1,R0
??? R0,R0,R1
...

我只能假设,当你的大脑有一个行星的大小时,眉毛就太高了,无法应对那些过于简单的那些讨厌的指示。

答案 70 :(得分:1)

今天在一个声明块的中间找到了这个:

// other variables
哎呀,真的吗?感谢。

答案 71 :(得分:1)

我曾经在VB.NET应用程序中遇到过这个小小的美女

Dim huh as String 'Best name for a variable ever.

答案 72 :(得分:1)

//返回

<强>返回;

答案 73 :(得分:1)

今天刚刚找到这个......

// TODO: this is basically a copy of the code at line 743!!!

答案 74 :(得分:1)

这是我在我小组的大学最终项目中的一个文件中写的评论

/* http://youtube.com/watch?v=oHg5SJYRHA0 */

答案 75 :(得分:1)

我们总是在工作中开玩笑的经典(完成拼写错误):

// Its stupid but it work

在旧的代码库中多次发现这种情况。

答案 76 :(得分:1)

我必须修复2000行代码中的错误,这些代码将来自GSM的音频转码为mu-law(主要使用位移和转换值数组)。文件中唯一的注释位于其中定义的唯一方法的顶部。那是:

/* Do the business */

答案 77 :(得分:1)

// Undocumented

答案 78 :(得分:1)

我曾经维护过我们为Harris小型机定制的操作系统代码(是的,这是很久以前的事了)。有一天,通过调度程序代码(汇编程序),我遇到了一个代码块,顶部有“Begin Magic”注释,后面约25行注释“End Magic”。中间的代码是我见过的最紧凑,最复杂,最优雅的代码。我们花了4个人来弄清楚那小部分代码实际上在做什么(VM切换)。

答案 79 :(得分:1)

我正在对一个超过1000行但没有任何注释的java类进行一些更改。我是他们编码风格的新手,所以我无法自拔添加像

这样的评论
/*Added because someone asked me to add it*/

答案 80 :(得分:1)

if (returnValue ==0)
  doStuff();
else
  System.out.println("Beware of you, the Dragons are coming!");

答案 81 :(得分:0)

/* this is a hack.
 ToDo: change this code */

答案 82 :(得分:0)

//I am not sure why this works but it fixes the problem.

这是我无用评论的首选。

答案 83 :(得分:0)

// this is messed up, and no one actually knows how it works anymore...

答案 84 :(得分:0)

有人给我发了一个c文件,里面描述了他的程序创建的二进制文件。

除了写真实数据的某个地方外,它没有任何评论

SwapArray(..); // Big endian ???
write();

我询问了SwapArray的实现,他告诉我我不需要它,只是为了确保它在linux机器上运行。

经过实验,我发现他在每个地方都使用了小端(这是正常的),但只有真正的数据是用大端编写的。通常你可以在十六进制编辑器中看到它,但数据是以浮点形式存储的,因此注意混合字节序并不容易。

答案 85 :(得分:0)

Pops的顶级肯定是

//  This code should never be called

答案 86 :(得分:0)

从我处理传统通信应用程序时的最爱。

// Magic happens here...

答案 87 :(得分:0)

今天碰到了这个:

/// <summary>
/// The Page_Load runs when the page loads
/// </summary>
private void Page_Load(Object sender, EventArgs e) {}

答案 88 :(得分:0)

我还记得另一个:

//TODO: This needs to be reworked.  THIS CRAP NEEDS TO STOP!!!

答案 89 :(得分:0)

{
    Long complicated code logic  //Added this
}

答案 90 :(得分:0)

{Some Code;} //我不记得为什么我这样做,但它有效...

答案 91 :(得分:0)

其实我有一些,

// 18042009: (Name here) made me do this

对这些评论不是很自豪,但我让他们提醒我为什么我做了特定部分的WTF代码,在这方面非常有用。

答案 92 :(得分:0)

我最近在以前写过的一些代码中发现了这个:

// it's a kind of magic (number)
$descr_id = 2;
$url_id = 34;

答案 93 :(得分:0)

这条评论实际上是用不同的语言写的,但我会尝试在翻译中获得效果:

//we trick it, if forbidden, as if it had already existed

评论试图描述的是它处理被关闭的列表项的方式 - 代码将该项标记为重复,因此应该跳过它。是的,这是一种非常低调的做事方式,但与荒谬的评论相比,它显得苍白无力。

答案 94 :(得分:0)

[some code]
// [a commented out code line]
// this line added 2004-10-24 by JD.
// removed again 2004-11-05 by JD.
// [another commented out code line]
[some more code]

a)为什么? b)哪条线?

答案 95 :(得分:0)

我在游戏的AI部分看到了一个很棒的代码:

..."AI code"...
if(something)
   goto MyAwesomeLabel;   //Who's gonna be the first to dump crap on me for this?
..."More Ai code"...

MyAwesomeLabel:
   //It wasn't that hard to get here, right?
   ..."Even more AI code"...

答案 96 :(得分:0)

  

//紧急TODO:重新实现这个狗屎,   旧代码像地狱一样破碎......   我们决定解决所有问题   问题

刚刚发现我的一个旧项目。起初我笑了,但最后我发誓,因为我仍然找不到这个bug。

答案 97 :(得分:0)

# Below is stub documentation for your module. You'd better edit it

答案 98 :(得分:0)

不太适合这个问题,但我讨厌看到:

try
{
  someSeeminglyTrivialMethod();
}
catch (Exception e)
{
  //Ignore. Should never happen.
}

每当我在代码审查过程中看到这一点时,我都会告诉他们用以下内容替换catch:

catch (Exception e)
{
  System.exit(0);
}

答案 99 :(得分:-5)

我认为这是关于SO帖子的最坏评论,并且对于发现其他情况感到失望。

答案 100 :(得分:-5)

评论代码是最不实用的评论:)