我通常认为这样的评论是不好的做法,我认为这类信息属于SCM提交日志。在大多数情况下,这只会使代码更难阅读。
但是,我仍然经常对特定类型的编辑执行类似的操作。
案例1-任务
如果您使用诸如Eclipse,Netbeans,Visual Studio之类的IDE(或通过某种方式在代码库上进行文本搜索以及其他操作),也许您的团队会使用某些特定的“注释标签”或“任务标签”。在这种情况下,这可能会很有用。
在查看代码时,我会不时添加以下内容:
// TOREVIEW: [2010-12-09 haylem] marking this for review because blablabla
要么:
// FIXME: [2010-12-09 haylem] marking this for review because blablabla
为此,我使用了在任务视图中可以在Eclipse中看到的不同的自定义任务标签,因为在提交日志中包含某些内容是一件好事,但是当您的主管在审查会议中问您为什么完全忘记了bugfix XY时,这还不够溜走了 因此,在紧急事件或真正可疑的代码段上,这可以作为附加的提醒(但通常我会保留简短的注释并检查提交日志,因为这正是提醒的目的,因此我也不会使代码混乱许多)。
案例2-第三方库的补丁
如果我的产品由于某种原因需要打补丁,因此需要将第三方代码打包为源代码(或库,但从源代码重新构建),那么我们会将补丁文件记录在单独的文档中,在其中列出这些“漏洞”供将来参考,并且源代码通常包含类似于以下内容的注释:
// [PATCH_START:product_name]
// ... real code here ...
// [PATCH_END:product_name]
情况3-非显而易见的修复
这个问题更具争议性,与您的高级开发人员所要求的更接近。
在我目前正在研究的产品中,有时(绝对不是一件平常的事情)会有这样的评论:
// BUGFIX: [2010-12-09 haylem] fix for BUG_ID-XYZ
我们仅在错误修正不明显且代码读取异常的情况下执行此操作。例如,对于浏览器怪癖就是这种情况,或者仅由于产品中存在文档错误,才需要实施晦涩的CSS修复。因此,一般而言,我们会将其链接到我们的内部问题存储库,该存储库中将包含错误修正背后的详细原因以及指向外部产品错误文档的指针(例如,针对知名Internet Explorer 6缺陷的安全建议,或者这样的东西。
但是如上所述,它非常罕见。借助task标签,我们可以定期运行这些标签,并检查这些怪异的修补程序是否仍然有意义或可以逐步淘汰(例如,如果我们首先放弃了对引起问题的bug产品的支持)。
就是这样:一个真实的例子
在某些情况下,总比没有好:)
我刚刚在我的代码库中遇到了一个巨大的统计计算类,其中的标头注释以带有常规yadda yadda的变更日志的形式出现:审阅者,日期,错误ID。
最初,我想到了报废,但我发现错误ID不仅与我们当前问题跟踪器的约定不匹配,而且与我加入公司之前使用的跟踪器之一都不匹配。因此,我尝试通读代码并了解类的工作方式(不是统计学家),还尝试提取这些缺陷报告。碰巧的是,它们非常重要,并且会在不了解文件的情况下使下一个家伙编辑文件,这很可怕,因为它处理原始用户发出的非常具体的要求时,会遇到一些小的精度问题和特殊情况。 。底线是,如果这些东西不在那儿,我就不会知道。如果他们没有去过那里,而我对课堂有更好的了解,
有时很难跟踪这样的非常老的要求。最后,我仍然删除了标头,但是在每个隐含函数之前潜入了一个块注释之后,描述了为什么这些“怪异”的计算是特定的请求。
因此,在那种情况下,我仍然认为这是一种不好的做法,但是男孩很高兴原来的开发人员至少将它们加入了!最好改为清晰地注释代码,但是我想总比没有好。