注释还是不注释

每个开发者都至少在代码中写过一行注释,一些人为了解释代码写了很多注释。本文收集了一些编写代码注释的实践。

 

Seattle Area Alt.Net项目组针对写注释的事情进行了讨论。Kelly Leahy倾向于编写自说明性质的代码以及少量的注释。他认为注释只是说明了系统中不正确的地方并且他注意到修改代码的时候经常会忘记了同时修改注释

 

 [编写注释]编写注释很大程度是依赖于个人习惯。我倾向于写一些简单明了的注释,而不是那种经常会被忘记同步更新的注释。我见过太多这种的情况:代码都已经不存在了,但是注释还在。代码没有紧挨着注释,可能是某个人在代码和注释之前写了新的代码。或者注释本身就是不正确的,因为代码已经被修改了,但是注释没有。

 

我发现注释太多还不如没有注释,我讨厌大段大段的注释。

 

Leahy排斥注释,所以他的10000行代码中可能只有1行注释。

 

如果你的设计当中存在约束条件(比如性能)的时候,注释有时也会非常有用的,而且这种情况也是难以避免的,因为你需要针对约束做一些说明。这种的情况下我也无法避免,所以我们很可能每10000行代码才会有1行注释。(除非是xmldoc注释,对于我个人而言的话,只要公开的API才有写注释的必要,否则那只会是没用的噪音)

 

Justin Rudd介绍说他的现在项目需要些很多的注释,因为项目中的那些API太混乱了:

 

我现在正在写一个Visual Studio的源代码管理组件。那些API是在是太混乱了,以至于我不得不在代码中增加注释,这样我会记得这个地方为什么要传递Guid.Empty,而另一个看来类似的地方却要传递一个特殊的GUID。否则,你就会搞砸了。

 

在现在的解决方案中,我为正在开发的4个事件接口添加了注释,希望下一个开发者不要删除7个函数中的那6个。

 

我会注释为什么某一个函数需要返回HRESULT,而不是返回S_OK。返回S_OK的时候,Visual Studio Crash了。(在关联的地方,这类的事情会被注释)

 

我还注释那些文档中说你可以传递null的地方,事实上却不可以。

 

在这个项目中,代码和注释的比例可能有21

 

Chris Tavares用注释来标记解决Bug

 

事实上,这类注释“//这么做是为了解决什么bug”不是坏味道,而是必须的。

 

但是Brandon Molina认为修改Bug的注释最好可以记录在版本控制系统中,而不是在代码内:

 

这样修改10Bug之后会怎样呢?你可能有一大段没用的注释,这会让你的代码看来更加混乱。还是使用版本控制系统吧。这样在你对比代码是,结合上下文的意思,注释会变得非常有用。

 

Brad Wilson提出了一个添加注释的原则:

 

 为什么型注释 == 好注释

怎样实现型注释 == 不好的注释

 

code comments上,Timothy Hilden坚持需要一些好的注释:

 

不写注释是很容易的。说实话吧,我们这些开发人员又不是为了获取普利策奖,这不是表现个人能力,这只是关乎是否懒的问题。

 

说实话,当代码需要注释而没有注释的时候,那会更糟糕。首先,这是对同事的一种不尊重。每个人都知道,当原作者在度假,或者离职,或者是其他原因导致原作者无法提供帮助的时候,需要去看那些含糊不清的,无法自说明的类和方法,会有多么地沮丧。程序员就像文章的作者,而后面的程序员就像是读者。就像作者一样,我们应该学会尊重我们的读者。

 

其次,不写注释的程序员对于自己过于自信。毫无疑问,我们在写代码的时候总是很有思路。但是在编程时,我们总是要同时考虑好几件事情。当你下次回过头再来看这些代码的时候,你很难回想起当时编写代码的思路。这种情况下,就应该在某个地方添加注释了。

 

Hilden不支持不正式文档——Scott Swigart Jeff Atwood 几年前提到的一个例子——就是过度使用注释的情况

 

 

 

他建议将所有的这些代码合并到一行,而不是注释每一步代码:

 

您编写注释的习惯是什么?这些习惯是公司强制要求的,还是你自己选择的?你是否支持那种尽可能少的注释政策,相信下一个开发者会理解你的代码,还是认为你应该花一些时间来注释那些不太清晰的代码。

 

【原文链接:http://www.infoq.com/news/2010/03/To-Comment-or-Not-to-Comment

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值