最有趣的代码注释,一次看过瘾!

编译:伯乐在线/黄小非

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

或者:

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

最近在 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)

原文发表时间:2018-10-31

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python专栏

继万字谏言后,Python Web 怎么学,看这篇就够了!

之前那篇「万字谏言,给那些想学Python的人,建议收藏后细看!」得到很多后台读者的留言,表示想再来点,甚至说万字系?你知道万字有多少么?不要杠我根本没有万字!...

14110
来自专栏数据派THU

手把手教你上手python库pydbgen(附代码、安装地址)

19860
来自专栏微信终端开发团队的专栏

关于Android N的那些事

今年3月,Google破天荒提前半年发布了Android N开发者预览版。当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门...

31660
来自专栏编程

033Python爬虫学习笔记-1从入门到爬取豆瓣书评影评

1.什么是爬虫 可以理解为抓取、解析、存储互联网上原始信息的程序工具,Google、Baidu底层都是爬虫。 2.为什么学Python和爬虫 从2013年毕业入...

359100
来自专栏java一日一条

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2016年刚刚入行的Android开发新兵,恭...

21520
来自专栏程序人生

上帝说:要有一门面向未来的语言,于是有了 erlang

今个谈谈 erlang。 这些文章流于表面,更多是简单的介绍。这篇文章不同,因为 erlang 并不是一门新语言,简单介绍它的人不算少,我希望这篇文章能在深度上...

428110
来自专栏华章科技

如何从互联网采集海量数据?租房,二手房,薪酬...

不少朋友看了沙漠君的文章后,都会问:那几十万条租房,二手房,薪酬,乃至天气数据都是从哪里来的?其实我还没告诉你这些数据在十几分钟内就可以采集到!

7820
来自专栏SDNLAB

SDN实战团分享(三十一):Segment Routing meet SDN

一、介绍 ? 在1990年代Yakov, Eric Rosen, Kompella很多业界先驱(仅列举了Juniper公司的MPLS业界领袖,其他公司也有 很多...

802160
来自专栏知晓程序

比你还急!为了让你有好身材,这款小程序连健身卡都要免费送

今天,知晓程序(微信号 zxcx0101)给大家推荐的一款鼓励健身的小程序,或许就可以帮到你。

13250
来自专栏张戈的专栏

详解Linux系统的CPU负载均值

上一篇文章的最后,作者提到了文章的参考来源,我特意前往访问了下,发现写得非常不错,特转过来,可以结合阅读,以便更容易理解 CPU 负载这个概念。 你可能对于 L...

58290

扫码关注云+社区

领取腾讯云代金券