可以在源代码中添加有关错误修复的注释吗?

esa*_*sac 9 language-agnostic comments

如果是这样,你在哪里划线?我的同事和我在这个问题上不同意.我见过这样的事情

// fixes bug # 22
Run Code Online (Sandbox Code Playgroud)

// fixed bug: shouldnt be decrementing
i++;
Run Code Online (Sandbox Code Playgroud)

如果更改非常重要,并从根本上改变了编写方法的内容,这样可以吗?或者您只是更改方法的摘要文本以反映它现在要做的事情?

我的意见是这些信息应该放在源代码管理中.有些人认为这是不好的,因为它会在源代码控制的上下文之外丢失(比如你切换系统并希望保留历史数据).

sh-*_*eta 32

评论应解释这些方法的工作原理.

源代码管理解释了为何进行了更改.


eri*_*son 23

如果你写正确的东西,添加关于错误修复的评论是个好主意.

例如,

/* I know this looks wrong, but originally foo was being decremented here, and 
   it caused the baz to sproing. Remember, the logic is negated by blort! */
Run Code Online (Sandbox Code Playgroud)

这样的东西Fixes bug #22 更好地保存在源代码控制.您的代码中的注释应该是路标,以帮助未来的旅居者,而不是满足过程和跟踪.

  • +1.一个理想主义者会说"评论应该解释这些方法是如何工作的.源代码控制解释了为什么要做出改变." 这忽略了这样一个事实:当你阅读复杂的代码时,它有助于知道为什么它做了非显而易见的事情,并且提到影响它的编写方式的案例就像解释这一点一样好. (9认同)

tva*_*son 6

不应该.您应该保留有关错误和更改集的信息,以修复源代码外部的错误.代码本身中的任何注释都只与代码所做的事情有关.别的什么都搞砸了.


Ree*_*sey 6

我个人认为评论应该是关于代码本身,而不是关于错误修复.

我的理由是可维护性 - 2年(或10年)之后,这个评论将不再有意义.在上面的示例中,我更喜欢以下内容:

// Increment i to counteract extra decrement
++i;
Run Code Online (Sandbox Code Playgroud)

不同之处在于它与错误无关,而在于代码正在做什么.评论应该是对代码的评论,而不是元信息,IMO.

这个意见部分是因为我维护了一个非常古老的代码库 - 我们有很多评论不再与错误修复或功能增强请求相关等等....