网站模板 源码-最有趣的代码注释,一看就有趣咯

编译:伯乐在线/黄小飞

【指南】:代码注释的作用不需要向程序员解释。 有时候看别人的代码,能看到一些让人发笑的注释。 例如:

或者:

// 当我写下这段代码时,只有上帝和我知道它在做什么

// 只有上帝现在才知道

我最近在 Quora 上看到一篇帖子,号召程序员分享他们见过的最有趣的代码注释。 看到各种有趣的笔记后,我打算分多段摘录与大家分享。

1. Bill Poucher 的份额(他是计算机科学系的院长)

我见过的最好的注释都是在源代码中用 HTML 编写的,任何想要阅读它们的人都可以看到。 我称之为“塞尔尼效应”。

曾经有一位非常聪明的德国研究生Tomas Cerny,在贝勒大学ICPC(国际大学生编程竞赛)技术开发总监Jeff Donahoo博士的带领下,负责将另一位非常聪明的研究生的设计原型转化为一个实际的产品。

三天来,杰夫来到我的办公室,告诉我,在他们的ICPC实验室里,冷战的格局正在显现。 因为有人在源码的注释里写了一些东西网站模板 源码,得罪了其他人。 (看看发生了什么,)我和他一起去了托马斯。

Jeff走后开门见山地问道:“Tomas,你是不是给Joel的代码加了注释,说他的代码荒唐(弱智)?” 托马斯坦言:“是的。” 杰夫接着问:“你为什么这样写?” 托马斯回答道:“因为(他的代码)实在是太可笑了(弱智)!”

我只是站着看,托马斯一脸困惑,杰夫强忍着怒火,场面实在是太尴尬了。 接下来,托马斯拿出他的《捷克英词典》,打开一看,上面写着,意思是:“under发达:弱智”(译注:其实,弱智这个词有两个意思,都是“智障、愚蠢”的意思)该项目尚未完成,正在开发中,这也是造成这种误解的原因。)

是的,开发确实还没有完成……后来,Tomas 将注释改为“正在建设中”。 然后,杰夫和我都对托马斯扩展法语的热情感到捧腹大笑。 我还不知道这个误会是否真的解除了。

让我告诉你,杰夫和我非常喜欢这个笑话。 以后,每当我们向新的ICPC会员介绍托马斯时,我们一定会讲这个笑话。 托马斯现在是布拉格捷克技术大学计算机科学系的系主任。 他也是学校ICPC技术部的创始人,也是我很好的同事。

除了从贝勒学院获得硕士学位外,托马斯还在这里找到了他的伴侣,一位音乐家和奥运会级别的短跑运动员。 当然,这又是一个关于奥林匹亚的爱情故事。

ICPI-ACM 国际大学生编程竞赛,由 IBM 赞助。

2. Anirudha Bose 分享:

当谢尔盖·布林(Sergey Brin,谷歌联合创始人之一)攻读博士学位时。 在斯坦福大学计算机科学专业,他的简历中没有包含任何“招聘要求”(Objective)的字样。 但当你去查看他简历的HTML源代码时,你会看到(他在简历HTML源文件中明确写了“薪酬要求”,但被注释掉了,并没有显示在浏览器页面上):

(“薪酬要求”的内容是:办公室要大,钱要赚,工作要少,如果能经常去精彩的地方旅游,还能报销就更好了。)

3. Abhinav Upadhyay 分享

/* 你不应该理解这一点 */

/* 我们不期望你理解这段文字 */

这条评论不是我亲眼所见,但在网络上却广为流传。 此评论来自贝尔实验室的 Unix 系统第六版,在《Lions' Commentary on UNIX 6th Edition, with Source Code》一书中标注。

代码及标记详情如下:

/*

* 切换到新的进程堆栈并设置其段寄存器

*/

retu(rp->p_addr);

确定();

/*

* 如果新进程因被换出而挂起,则将其堆栈级别设置为最后一次调用并将其传递给 sayu(u_ssay)。

* 这样做的目的是保证aretu方法调用后立即返回的值本质上是上次调用sayu的返回值。

* 你不应该理解这一点。

* 我们不期望你能理解这段话

*/

if(rp->p_flag&SSWAP){

网站模板 源码-最有趣的代码注释,一看就有趣咯

rp->p_flag=&~SSWAP;

aretu(u.u_ssav);

/*

* 这里返回的值有许多微妙的含义。

* 请参阅 newproc 注释。

*/

返回(1);

4.卡尔佩什·辛格分享:

我有一个坏习惯,每当我看到一个做得很好的网站时,我都会回到控制台查看它的源代码。 我想很多后端工程师都喜欢这样做。

我购买了 Box8 服务并在他们的控制台中看到了以下信息。 (伙计们,他们正在控制台/源代码上发布紧急招聘广告。我已经受够了广告之类的,你就不能想出一些新的东西吗?)

你可以看一下Box8.in的控制台。

但这真的很有趣。

另一个有趣的注释是target.com编程游戏网站的源代码

可查看:通过 The Geekiest 联系表(测试版)使用 Target 编写代码

玩得开心!

5、刘伟分享【注:这明显是来自中国的工程师】:

一周前我看到很多人在社交网站上讨论这个网站,网站的源代码中就包含了那些评论。

有人说,公司应该加强对代码的初步审查机制。 有人怀疑公司可能没有足够的人力资源来进行最初的代码审查,因为至少需要两名程序员才能完成这项工作。

6. 埃德温·罗梅罗分享:

我不确定有多少人熟悉网站上的 Robots.txt 文件。 事实上,这个文件并不是运行所必需的代码,但它声明了爬虫/搜索引擎可以抓取/搜索网站的哪些内容。

我在Nike网站上找到的Robots.txt文件特别有趣,如下:

如果你读一下文档后面的内容,你会发现它是这样写的:

“……就爬它吧。”

这种文笔与耐克著名的广告语“Just Do It”不谋而合。

**更新**

耐克最近更改了他们的机器人文件并添加了一个有趣的模式:

感谢克里斯·谢泼德爆料!

7.Soham Bhowmik的分享:

嗯,这个答案当然不完全是关于注释,而是关于代码。

我的第一个项目是一个针对美国非常受欢迎的新闻频道的 iOS 应用程序,在交付之前需要遵守规则。 这件事已经过去很久了,大约是六年前的事了。 当时iOS最新版本仅为3.2。 每当公司将应用程序发送给客户时,该应用程序就会在 5 天后过期,用户必须回到我们这里来修复该应用程序。

代码是用 Objective-C 编写的:

BOOLappExpired=.....一些代码......;

if(应用程序已过期)

[NSString哈哈哈哈];//现在会故意崩溃,不会使用exit(1)

//这里故意让程序崩溃而不使用exit(1)

当然,如果今天代码还是这样写的话,编译器会报错,但那时编译器只会给出警告信息,然后程序在运行时就会因为调用了未定义的方法而崩溃。

8. 雷·穆林斯分享:

任何使用过IBM的VSAM系统(包括z/OS和z/VSE及其后续版本)的人都应该体验过该系统的二手特性。

我曾在一家日本软件公司工作,负责一个事务处理检测程序的技术运营、维护和开发。 该检测程序是在日本开发的,具有 VSAM 文件的套接字。 事实上,程序需要一个控制模块来负责文件的访问操作。 显然,写这个控制模块的人今天过得很糟糕,因为在控制模块获取通用错误方法地址的代码中,有这样一条注释:“VSAM is FUCKED UP AGAIN,过来。”更有趣的是,这些控制模块的代码即将被打印在操作手册上(包括带有FUCK的文字),所以在近20年的实践中,这个注释写在那里,然后发送给客户。 然后直到三天后一个客户想要更换控制模块,他发现有这样的说明,然后告诉我们。

下一篇不是评论,而是我的实际工作。 我们有一套内部标准和技术文件。 我们的系统程序员需要记录并演示一个渣4GL产品的延迟方法。 他的文档草稿初稿大致是这样写的:

IFTIMEDIFF>=5

SAY"THE SYSTEM IS FUCKED, PLEASE BEAR WITH US"//如果系统很SB,请耐心等待

睡眠(10)

万一

草稿完成后,他忙着其他事情网站模板 源码,没有时间处理文件。 然后他突然意识到提交文件的截止日期是晚上。 所以他连看都没看就直接把草稿发给了文档经理。 一周后,数百份文件被复制并分发。 而且内容和他草稿里写的一模一样,没有改一个字。

9.特里·兰伯特分享:

有两个我最喜欢的笔记,都是比尔·保罗的。 这个人为 FreeBSD 做了很多工作,现在受雇于 Wind River Systems,我听说最近该公司将被 Intel 收购。 比尔是一位非常有才华的程序员,但他对荒唐事的容忍度也低得惊人,而且他有一种不同寻常的幽默感。

这是我喜欢的第一个评论,在 RelTek 8129/8139 PCI NIC 驱动程序中找到。

/*

*RealTek8139PCI NIC 重新定义了“低端”的含义。

RealTek8139PCINIC重置下限

*这可能是有史以来写得最差的 PCI 以太网控制器驱动程序

*SMC 制造的 FEAST 芯片可能除外。

*8139支持bus-masterDMA,但它很糟糕

*接口会抵消任何性能提升

*总线主控 DMA 通常提供。

*对于传输,该芯片提供了四个 TX 系列

*描述符寄存器。每个传输帧必须是

*连续缓冲区,在长字(32 位)边界上对齐。

*这意味着我们几乎总是必须按顺序 dombuf 副本

*传输帧,除非在不太可能的情况下)

*数据包适合 asinglembuf,并且 b) 数据包是

*在mbuf 的数据区域内32 位对齐。 的存在

* 只有四个描述符寄存器意味着我们永远无法拥有

* 任一处排队等待传输的数据包数量超过 4 个

* 时间。

* 接待也好不了多少。 驱动程序必须分配一个

* 单个大缓冲区(最大大小为64K),其中

网站模板 源码-最有趣的代码注释,一看就有趣咯

* 芯片将DMA接收帧。 因为我们不知道在哪里

*在这个区域内收到的数据包将开始或结束,我们

*别无选择,只能将数据从缓冲区复制到

*mbufs 以便将数据包传递给更高层

*协议级别。

*考虑到这种糟糕的设计,不可能真正实现

这么糟糕的设计是不可能达到100Mbps的

* 100Mbps 时性能不错,除非你碰巧有

除非你有一台有强大CPU驱动的笔记本电脑

* 400Mhz PII 或一些同样强大的 CPU 来驱动它。

* 好的一面是,8139 确实有一个内置 PHY,

*虽然不是使用 MDIO 串行接口,例如

* 大多数其他 NIC,PHY 寄存器可直接访问

* 通过8139的寄存器空间。 8139支持

*自动协商,以及 64 位多播过滤器。

这绝对是一个很酷的笔记。 传说,为了让比尔删除/修改/修改/更新这张纸条,制造商用各种条件诱惑他,但他拒绝了。

第二条注释位于修改后的 BSD 许可证的“损害限制”条款中,比尔在其代码中引用了该条款。 其实它并没有对原来的合同做大的改动,所以很多人听到这个合同后,看到它和模板差不多,就直接跳过了。 很少有人仔细阅读全文。

比尔·保罗或他脑子里的声音对任何事件都不负有责任

对于任何直接、间接、附带、特殊、示范或

间接损失

什么,你还没看过这个吧? 其实很容易错过。 有趣的地方就在这里:

“比尔·保罗或他脑子里的东西绝不会造成任何直接、间接、偶然、特殊、示范性或实质性的损害。”

无论如何,这家伙是个天才。

10.鲍里斯·扎莫鲁耶夫分享

我之前从事过一个高性能分布式键/值存储项目。 这是一款设计精良的软件,具有极其简单的 API。 如果你想获取一个值,那么你可以使用命令:GETN(get,value)。 如果要保存值,请使用命令:PUTN(put, value)。 其他命令也很简单,比如MGETN(获取多个,值),MPUTN(放入多个,值),INCR(增量),MINCR(多个增量),(基本上命令可以不言自明)。

所有的命令都会被发送到一个dispatcher函数来分析、识别逻辑,然后调用相应的处理函数。 处理函数也基本上是不言自明的,所以代码上不需要太多注释,例如:

intServer::handle_getn(...){...}

intServer::handle_mgetn(...){...}

但是三天了,有人让我检查下面的代码:

// 在苏维埃俄罗斯,Putn 会对付你!

// 在前苏联,Putn 会抓到你! 【译注:注意Putn和普京的英文拼写(Putin)非常接近。 普京曾经是南斯拉夫的中央情报局局长。 】

intServer::handle_putn(...){

我立即选择pass,合并到代码库并发布。 据我所知,这段代码仍然在代码库中。

11. Nikunj Madhogaria的分享

//喝醉了,稍后修复

//我太醉了,稍后再改

捕获(异常){

网站模板 源码-最有趣的代码注释,一看就有趣咯

//谁在乎?// ← 这不是翻译的,我猜你能理解它

我最喜欢的注释之一是:

很久很久以前; /* 在遥远的星系 */

如果读者不明白什么意思,请看右图:

12. 萨莎·克拉索夫斯基分享

有一次,我从一个中学生给我的代码中随机挑选了一段代码,然后发现了这样一段注释:

/* 不要删除该评论 */

/* 不要删除这条评论 */

当然,我只是想尝试看看如果评论被删除会发生什么。 所以我只是删除并重新编译。 结果,程序确实无法运行。 然后我重新添加注释,它又起作用了。

删除评论后会报错LINK1000。 根据链接器错误文档的描述,错误原因直接是:“未知错误;请参阅文档或寻求技术支持”。

为什么这条评论删不掉? 恐怕这个问题对我来说仍然是个谜。

13. Wojtek Swiatek 分享

我看到了一些数据分析代码,然后被下面的评论震惊了:

# 不要再使用 anal 作为变量名

# 我到处都能看到肛门这个词!

#请不要再这样做了!

# 如果你想使用它,请使用analyze或xbvvzr,或者你可以使用任何其他。 只是不要将其写为 anal_insert 或 anal_check 。

14. 迈克尔·德姆洛分享

我新加入一家公司,然后发现三周前写的评论。 此评论是开发团队在项目之前写的。 我写的日期是我笔试和即将进入公司之间的时间段。

在最初负责该项目的先生们被解雇的前一天,我很幸运地被派到这个项目上工作。

/*这段代码写得一塌糊涂,写这段代码的SB做了一些蠢事

* 他们使itvinserter.dll 依赖于egg_end470.dll。

* 然后让egg_en470.dll依赖itinserter.dll。 真是个蠢才! 但,

*有一个合理的方法来解决这个问题,我正准备做一些挖掘来解决它。

*然而,真正解决问题的唯一办法就是找到这个曾经写代码的王八蛋,

*然后用力踢他的两腿之间。虽然这并不能解决问题,但是

* 可以帮助正义。

*真正的TM是SB

**呵呵*

* EEGEN470::TapeDeck 是一个用于控制磁带的抽象类

*套牌...啊,操,我做不到。 我什至无法记录这次黑客攻击。

* 想想看,你是个聪明人。

*/

15. 瑞安·詹茨施 (Ryan Jentzsch) 分享

我很多年前在一家公司工作过,我还保留着当时的C盘,里面有我当时写的程序代码以及我给前任CEO留下的笔记。

/*

网站模板 源码-最有趣的代码注释,一看就有趣咯

这家公司的首席执行官(我的前老板)告诉我想写什么就写什么,我就应该写。

我将前首席执行官称为 Dip Shit,简称 DS。

DS 认为自己是软件开发天才。对我来说不幸的是(我是该程序的维护者),我的

主要任务是擦掉他不干净的粪便。

DS是一个一想到就想到的开发者。 就像 Evel Kievel 在他的代码中所做的那样,

大量使用 GOTO 语句,以及大量从模块直接访问

跳转到另一个模块的IF...THEN语言中间,而这个模块

它与第一个模块完全无关。

说起IF结构,DS很喜欢用,他都不知道

CASE或者SWITCH挡住了这些东西。那我就只能是一段代码了

考古学家,挖掘深层 IF-ELSE 嵌套层次结构(仍然是未缩进的层次结构)

缩进)IF...THEN...ELSE 逻辑块。

DS 认为他很聪明,这在他命名变量时就表现出来了:

全局 i=0;

全局 dateMyWife = 1;

日期区域AFruit = '12/12/98';

GiveDatesToMyWife = 日期AreAFruit + dateMyWife;

如果(一些学生)

给我的妻子=假;

// 瑞安. 为什么有时会崩溃?

if (giveDatesToMyWife) 转到 :hotTub

//好的 DS,因为您更改了 GiveDatesToMyWife 数据类型

(不仅如此,你还将整数乘以字符串——编译器已经

警告你)......无论如何,在弱类型语言中你会得到

脑残能力,你经常改变数据类型,把字符串改成布尔值,所以当

从字符串到布尔值,因此当

当变量是字符串时 if(giveDatesToMyWife) 执行

当 if(giveDatesToMyWife) 运行时,里面的变量是一个字符串,

程序肯定会崩溃——因为字符串不是

逻辑上可确定的类型。另外,由于 someStuid 是全局的,所以

只有你有超能力,你才能知道这样的全局变量是在哪里定义的,

或者那里已经被改变了。

DS 将仅使用全局变量,而不使用局部变量。 引用他的话:“

当我使用局部变量或私有成员变量时,我的程序总是报错,

说找不到变量。 所以我会让一切都全球化。 ”

我还有更多反例。 事实上,如果你被这些不合情理的代码滥用了,你就会

我能感觉到什么。

*/

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站源码 网站模板 源码-最有趣的代码注释,一看就有趣咯 https://www.wkzy.net/game/140564.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务