图0:从虾米音乐“穷逼VIP”事件说起,程序员对代码注释应该怎么看?

编辑|InfoQ 小智

11 月 19 日,某技术论坛上出现了一篇讨论阿里旗下虾米音乐客户端的帖子,引发了网友争议。发帖人称,虾米音乐客户端的程序员在代码注释里竟然称一些短期 VIP 客户为“穷逼”VIP,此外,还有“Beggar VIP(乞丐 VIP)”的相似注释。一时之间,引起热议。

图1:从虾米音乐“穷逼VIP”事件说起,程序员对代码注释应该怎么看?

原贴地址:

https://www.v2ex.com/t/407653?p=1

11 月 20 日,虾米音乐 App 前员工八座在知乎更新评论,“对不住各位,本人就是那位始作俑者程序员。今后我老老实实写代码,正正经经写注释”。他说,在自以为是的“吐槽”中丧失了对客户的敬畏,对所有虾米用户,以及互联网用户表示道歉。 另外,该程序员表示,因为家庭原因,他早一月前就已经离职,对于此次发生的事件,他自己也没有想到。

知乎链接:

https://www.zhihu.com/question/68347364/answer/262277195

其实类似的纷争并不少,比如在美国:

微软已全面取消使用“黑名单”“白名单”两个词。

“黑名单” (black list) 现已替换为 “阻止列表 (block list)”

“白名单” (white list) 已替换为 “允许列表” (allow list) 或 “核准清单” (approved list)

替换理由:

As a corporate policy, the term “black list” (or “blacklist”) is not to be used at Microsoft due to the fact that it may be interpeted as racially offensive.

根据公司政策,我们不使用 blacklist 这个词语,是因为这个词语有可能被解释成为是一种种族歧视。

部分程序员认为,写代码是一个冗长且无趣的过程,不在代码注释里留下点吐槽、好玩的东西,对不起自己的千万行代码。所以,就有了各种各样或恶趣味、或啼笑皆非的代码注释。比如:

图2:从虾米音乐“穷逼VIP”事件说起,程序员对代码注释应该怎么看?

图3:从虾米音乐“穷逼VIP”事件说起,程序员对代码注释应该怎么看?

代码注释的确是一个彰显程序员个性的地方,但如果放任自流,很容易出现如虾米音乐这样的公关危机。国内外的程序员们,对于代码注释又是怎样看的?

编写注释对于大多数人来说是个人的事情,但我本人非常反对写注释,因为一旦修改代码,那些注释就入土为安了——这种情况我见得太多了:注释还在那儿,但代码早就被删除了或是描述的行为被删掉了、代码并没有紧跟注释之后(因为有人在注释和原来的代码之间插入了新的代码)、注释和代码不一致,因为代码被修改了而注释却没有变化。我觉得这种注释比不写注释还恶心,我憎恨注释。

有时注释还是很有用的,比如设计上有不可避免的约束(性能变化等)时就可以加上一些注释。我尽量不写注释,我们大概每 10,000+ 行代码会写一行注释(除了无聊的 xmldoc 注释,我个人觉得这种注释只对于 public API 有用,别的地方一无是处)。——Kelly Leahy

此前我为 Visual Studio 编写过一个源代码控制包。API 实在是太糟糕,没办法只能多写注释了,这样我就能想起来为什么在一个地方需要传递 Guid.Empty 而在另一个地方(看起来很相似的地方)需要传递一个特殊的 GUID,否则一切就都乱套了。——Justin Rudd

坦白地说,糟糕的是在代码需要注释的时候却没有编写。首先,这间接地说明了程序员缺少对同伴的尊重。每个人都知道查看大量的类是多么不爽的一件事,尤其是其中包含很多含义模糊、自我描述性差的函数,更有甚至,之前编写代码的人度假去了、离职了或是由于其他原因找不到了。程序员应该是个艺术家而同伴则是其观众。作为艺术家,应该尊重我们的观众。

其次,不写注释表明程序员太过于自负了。当然了,在写代码的时候我们很清楚自己在干什么,编程的时候脑子里会有很多想法,但下一次再看自己所编写的代码时将很可能无法找回当初的想法。以上这些都是常事,这需要我们在适当的地方编写具有描述力的注释。——Timo Hilden

基本很少写代码注释,把写注释的时间用来起一个好变量名。——PrideChung

写 TODO 的时候可能会写解释性的注释简述实现方法,实现完了就删掉了。——dorentus

只要注释不是代码的简单重复,并且有良好的格式做保障,多一点注释没有什么坏处。我只反对一种注释,就是把无用的代码框起来那种。——SoloCompany

函数一般不写注释,代码自说明 。有时候写复杂逻辑的时候会先用注释写步骤,写完也不会删掉… 别人的代码一般不会动(不要乱动别人的代码),但是自己造代码写完会站在第三人的立场上根据复杂度酌情加注释。(跟上句不同的是,上一句是一开始就知道复杂,这里是越写越复杂,可能是因为逻辑也可能是因为业务) ——repus911

今日话题

你对代码注释怎么看?你写过或看过哪些有趣的代码注释?

欢迎留言告诉我们!评论区已就位,请开始你们的表演!

余下全文(1/3)
分享这篇文章:

请关注我们:

发表评论

电子邮件地址不会被公开。 必填项已用*标注