这代码注释太好笑了吧!

编译:伯乐在线/黄小非

代码注释的作用,不需要对程序员解释了。有时在查看他人代码,能看到一些令人不禁大笑的注释。比如:

或者:

// 写这段代码的时候,只有上帝和我知道它是干嘛的 // 现在只有上帝知道

最近在 Quora 上看到一个帖子,号召程序员分享自己见过最有趣的代码注释。看到了各种有趣的注释,在这里摘取些片段给大家看。

1. Liu Wei 的分享[一位来自中国的工程师]:

我一周前在社交网站上看到很多人在讨论这个网站,网站的源代码包含了这些注释。有人说,这家公司应该加强对代码的审核机制,有人则怀疑这家公司可能没有足够的人力资源来做代码审核,因为至少需要两个程序员才能完成这项工作。

2. Edwin Romero 的分享:

我不确认有多少人熟悉站点内的 Robots.txt 这个文件。其实这个文件不是运行必要的代码,但是它声明了爬虫/搜索引擎能爬到/搜到站点的哪些内容。

我在 Nike 网站上发现的 Robots.txt 文件非常有意思,如下:

3. Anirudha Bose 的分享:

谢尔盖.布林(Google 的联合创始人之一)在斯坦福大学念计算机科学博士学位的时候,他的简历里并不含任何”待遇要求“(Objective)的字眼。但当你去查看他的简历的 HTML 源代码的时候,你会看到(他在简历 HTML 源文件里明确写了“待遇要求”,只是用注释注掉了,在浏览器页面上不显示。):

(其“待遇要求“的内容是:办公室要大,挣钱要多,干活要少。如果能经常去奇妙的地方旅行而且还能给报销的话,那就更好了。)

4. Abhinav Upadhyay 的分享

/* You are not expected to understand this */ /* 我们并不指望你能看懂这段话 */

这段注释并不是我亲眼所见,但是它在网上传得很厉害。这段注释是出自于贝尔实验室的 Unix 系统第六发行版,并在《Lions’ Commentary on UNIX 6th Edition, with Source Code》这本书中标注出来的。

代码和标注的细节如下:

5. Kalpesh Singh 的分享:

我有个坏习惯,每当我看到做得不错的网站,我就想去控制台看它的源代码。我想很多前端工程师都喜欢这样做吧。

我订购了 Box8 服务,并在他们的 console 里看到了如下信息:

伙计们,他们居然在 console/源代码里面打招聘广告。我对广告什么的早就受够了,你们就不能搞点儿新花样?

你们可以看看 Box8.in 的 console。

还有一个比较有意思的注释是 target.com 编程游戏网站的源代码

可查看:Code With Target via The Geekiest Contact Form (BETA)

6. Nikunj Madhogaria 的分享

//drunk, fix later //喝大了,一会儿再改

Catch (Exception e) { //who cares? // ← 这不翻译了,估计都能看懂吧 }

我最喜欢的一个注释是:

long long ago; /* in a galaxy far far away */

如果你不明白什么意思,请看下图:

7. Bill Poucher 的分享(他是一位计算机科学教授)

我见过的最佳注释是以 HTML 格式写在源代码里的,任何想要阅读的人都能看得见,我管它叫“Cerny效应”。

曾经有一位很有天赋的捷克研究生 Tomas Cerny,在技术研发部主任 Jeff Donahoo 的领导下,负责将一个设计原型转换成实际产品。有一天,Jeff 到我的办公室跟我说有人在源代码的注释里写了一些话,冒犯到了其他人。

Jeff 问:“Tomas,你是不是在 Joel 的代码上加了注释,说他的代码是愚蠢(retarded)的?”Tomas 倒是很坦白地说:“是的。”Jeff 又问:“你凭什么这么写呢?”Tomas 回答说:“因为(他的代码)确实愚蠢(retarded)啊!”

我就站在一边看着,Tomas 一脸懵逼,Jeff 强压怒火,场面真是大写的尴尬。接着,Tomas 拿出了他的《捷克语-英语词典》,上面写着,词义:“开发中(under developed):retarded”(其实 retarded 这个词有两个意思,既有“弱智,愚蠢”的意思,也有项目未完成,正在开发中的意思。)这也是造成这个误会的原因。

是的,开发确实还没完成......后来,Tomas 就把注释修改为了“建设中(Under construction)”。然后我和 Jeff 都对 Tomas 拓展英语能力的热情捧腹大笑。

8. Boris Zamoruev 的分享

我曾经做过一个高性能分布式键/值存储的项目。这是一个设计很精巧的软件,API 非常简洁。如果你要获取一个数值,那么你就用命令:GETN(get, 数值)即可。如果你要存一个数值,那就用命令:PUTN(put, 数值)即可。其他的命令也很简单,比如 MGETN(get multiple, 数值),MPUTN(put multiple, 数值),INCR(增量), MINCR(多个增量),基本上命令都可以自解释。

所有的命令都会被送到一个 dispatcher 函数去进行解析,辨明逻辑,然后去调用相应的处理函数。处理函数基本上也是自解释风格的,因此代码里面也不需要太多注释,例如:

int Server::handle_getn(…) {…} int Server::handle_mgetn(…) {…}

不过有一天,有人让我 review 一下下面这段代码:

// In Soviet Russia, Putn handles you! // 在前苏联,Putn 就会搞定你!【Putn 和普京的英文拼写(Putin)非常接近。普京曾经是苏联的克格勃。】 int Server::handle_putn(…) { }

我当即就选择了通过,然后合并到代码库并且发布了。据我所知,现在这段代码还在代码库里。

9. Michael Dehmlow 的分享

我新入职了一个公司,然后发现了一段三周之前写的注释,这段注释是项目之前的研发团队写的,写的日期就是我来公司面试和正式入职的这段期间。

我有幸在原来负责这个项目的先生们被炒鱿鱼的前一天被派来参与这个项目。

我还有更多的例子,如果你也被这种天马行空的代码虐过的话,你就能体会我是什么感受了。那么,如何才能写出令人赏心悦目的代码呢?为了实现代码可复用性,扩展性以及灵活性,前辈们从实践中总结出了一套可套用的武功招式,这就是设计模式。

本文分享自微信公众号 - GitChat精品课(CSDN_Tech)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券