脏话越多,代码越好!

夏皮罗-威尔克检验(Shapiro–Wilk test) 1介绍 夏皮罗-威尔克检验是一种在频率上统计检验中检验正态性的方法。它在1965年由夏皮罗和威尔克发表 2、理论 Shapiro-Wilk检验检验了样本x 1,…,x n来自正态分布总体的原假设。该检验统计量是 3、解解释 该检验的零假设是总体呈正态分布。因此,如果p值小于所选的alpha级别,则否定假设被拒绝,并且有证据表明所测试的数据不是正态分布的。另一方面,如果p值大于选定的alpha级别,则不能拒绝零假设(数据来自正态分布的总体)(例如,对于.05的alpha级别,数据集用p小于0.05拒绝零假设 阅读详情

你在读开源代码的时候有没有遇到过这种注释?

What the fuck ?

Dude,WTF

Fuck this !

我遇到过,每次都忍不住笑,心想老外可真是性情中人,遇到不爽的地方就开骂,还直接写到注释中,甚至代码中。

b75001e1b7ef69c650a9d23865a7e5ed.png

Bob大叔在《Clean Code》一书中谆谆教导我们:要对变量、函数、类精心命名,避免耍小聪明,别使用双关语。

那么在注释甚至在代码中说脏话,会不会影响总体代码质量呢?

还真有人做了这个研究,Jan Strehmel,一个来自德国卡尔斯鲁厄理工学院的学生发表了一篇论文,名称就叫《在开源代码中脏话的使用和代码质量之间有相关性吗?》

为了研究这个问题,作者从GitHub中抓取了3800个含脏话的C代码库,7600个不含脏话的C代码库,用自家的软件SoftWipe分析它们对编码标准的遵守情况,逐个打分。

然后发挥他在统计学的技能,用了中心极限定理,Bootstrapping,Significance testing,Jarque-Bera test,Shapiro-Wilk test,Q-Q plot,Kolmogorov-Smirnov test ......,一顿操作猛如虎,最后他得到了一个惊人结论:

包含脏话的开源代码明显比不含脏话的质量更好!

39869db0a2ac7d56a4d2a7dc231cc9fe.png

(原论文有很多图,感兴趣的可以去看看)

面对这个结果,作者恐怕也没想到,他试图解释到:脏话代表了程序员对代码极其复杂性的情感!在写代码的时候,骂几句脏话,是缓解压力的一种方式,这反过来⼜可以提⾼注意⼒,从而提⾼代码质量。

当然,你可千万不要理解成只要在代码中用了脏话,代码质量就会有提高,那就大错特错了。

这个结果让我立刻想到了Linus Torvalds,他经常Fuck 这个,Fuck那个的,Linus在内核源码中对别人代码的评论就足以扭曲统计结果。

57860d1b82627032b1b41b8bff57f884.png

在Linux最早的几个版本中就出现fuck, shit ,damn这样脏话,这似乎成了一种Linux的文化,在后续Linux源码中各种脏词不断出现。

在2005年7月28号,fuck*达到了顶峰,足足出现了68次,随后逐渐下降。

而 idiot* 则一致是在缓慢上升,现在和damn* 并驾齐驱,不分上下。

2e0af62d130e8bf572f115e393e6ecc1.png

(脏话在每个版本中出现的次数,点击看大图)

但是,这些脏话并不影响Linux内核是优秀代码的典范(详情参见这一篇文章《漫画 | 因为用了C语言,Linux内核代码一团糟》),以Linus Torvalds为首的团队对代码结构和风格做了严格的定义,在Review中坚持执行。

在Java社区,开源代码中的脏话也不少。

2018年,IBM 软件工程师 Adam Farley 给 OpenJDK 提交了一个 Bug ,说 OpenJDK 源码中脏话太多了,到处都是,OpenJDK是在专业领域使用的,这太不合适了吧?这不我特意提交了一个Changset把它们都删了。

5bdb9bef759ee878fc78c72ec041c13c.png

544815eabccb096a6aee9530cb521b3b.png

c00489225d4d12c6c093b1b197810291.png

3天后,经过 OpenJDK 社区讨论,大家认为:

Damn 和 Crap 不算脏话!还有3 个 f**k,是上游的锅(回头会跟进处理),只有一个文件中的f**k,都是脏话,应该删掉。

为什么程序员喜欢在源码中用脏话表示自己的想法呢? 

代码是程序员每天都要面对的工作对象,对代码确实会出现复杂的情感,有时候需要一种情绪的宣泄。

看到一段高深的,自己无法理解的代码,what the fuck?

好不容易把一段复杂逻辑的各种分支,边界条件都搞定了,代码实在是乱,don't fuck with it !

花了很大的精力写完了逻辑,却发现有个异常无法处理,damn,damn,damn

......

咱们国内程序员似乎比较含蓄,很少在代码中写脏话,更喜欢吐槽公司,吐槽系统,是不是这样?

不过,一定要记住一点:当在代码评论中出现脏话时,你就要小心了,不要轻易动下面的代码,弄不好就是个大坑!

参考资料:

https://cme.h-its.org/exelixis/pubs/JanThesis.pdf  

https://www.vidarholen.net/contents/wordcount

(完)

点击下方图片,查看更多精彩

62dfa2268adfc6ab07a882a5c7938138.png

9e0144bfe71bd3da98022dd380009673.png

688d1fd312a95aa3d6cc2192a7c2dc55.png

be5f3bfa1382db2da4384677da0d8c19.png

Shapiro-Wilk正态性检验(Shapiro和Wilk于1965年提出) 计算Shapiro-Wilk统计量:检验首先计算Shapiro-Wilk统计量,这是一个衡量数据与正态分布拟合的度量。该统计量基于数据的观察值和正态分布的期望值之间的差异。 阅读详情

相关推荐

Shapiro-Wilk检验

Shapiro-Wilk检验,小样本使用的正态性检验,程序里注释很清楚

检查数据是否符合正态分布

flyfish

二分掌柜的 2008

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 74

大数据时代的“小数据 系列3 --Shapiro-Wilk检验

什么是Shapiro-Wilk检验 Shapiro-Wilk检验用来检验小样本数据是否数据符合正态分布。类似于回归的方法一样,计算一个相关系数,它越接近1就越表明数据和正态分布拟合得越好。 构建检验统计量W 建立原假设与备择假设 原假设为H0:数据集符合正态分布;备择假设H1:数据集不符合正态分布。 计算p值 非正态分布的小样本数据在检验时也可能出现较大的W值。因此需要通过模拟或者查表来估计其概率。由于原假设是其符合正态分布,如果p值小于所选择的α水平,则拒绝零假设,如果p值大于所选择的α水平

k_wzzc的博客 4567

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1082

Halcon 20.11在WPF中的交互式绘图:完整实现矩形ROI的创建、拖动与坐标获取

本文详细介绍了如何在WPF框架下利用Halcon 20.11实现交互式矩形ROI的创建、拖动与坐标获取。通过HDrawingObject和HSmartWindowControlWPF控件,开发者可以高效构建机器视觉应用,提升项目实战中的开发效率。文章涵盖环境配置、事件处理、坐标获取及性能优化等关键内容。

weixin_29266007的博客 427

java 判断正态分布_如何检验数据是否服从正态分布

《如何检验数据是否服从正态分布》由会员分享,可在线阅读,更多相关《如何检验数据是否服从正态分布(4页珍藏版)》请在人人文库网上搜索。1、最新资料推荐如何检验数据是否服从正态分布一、图示法1、 P-P图以样本的累计频率作为横坐标, 以安装正态分布计算的相应累计概率作为纵坐标,把样本值表现为直角坐标系中的散点。 如果资料服从整体分布, 则样本点应围绕第一象限的对角线分布。2、 Q-Q 图以样本的分位数...

weixin_35698069的博客 2355

华为数通---配置风暴控制案例

风暴控制可以通过阻塞报文或关闭端口来阻断广播、未知组播和未知单播报文的流量。

2301_77081516的博客 1627

含有脏话的开源代码比不含脏话的代码质量明显要好!

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elast...

weixin_44421461的博客 246

微电网系列: 位移因数DPF&&功率因数PF&&过激&&欠激

文中对比了位移因数(DPF,仅基波相位)与功率因数(PF,含谐波影响)的差异,指出PF=DPF×DF(畸变因数)。过激/欠激状态对应无功功率控制:过激(容性,电流超前,抬升电压)与欠激(感性,电流滞后,抑制电压)。PCS(如光伏逆变器)需逆向调节电网无功状态,过激时发出容性无功,欠激时吸收感性无功,以维持电压。

云纳星辰怀自在 1174

Python 爬虫实战:抓取百科网站上某个词条的详细信息

百科网站(如维基百科)为用户提供了丰富的知识内容,涵盖了从历史、文化到科技等几乎所有领域的知识。对于需要大量数据进行分析、研究或机器学习项目的开发者而言,抓取这些网站的数据显得尤为重要。通过编写一个 Python 爬虫,我们能够轻松地抓取百科网站上的某个词条及其详细信息,从而获取并整理这些知识内容。本篇博客将深入介绍如何通过 Python 编写爬虫来抓取百科网站(如维基百科)的某个词条的详细信息,包括标题、正文内容、参考文献等。requests:发送 HTTP 请求,获取页面内容。

2201_76125261的博客 1671

麻痹!是脏话,也是状态

神一般的世界,我不懂,我只是猜忌了所谓的老天公平,但不论如何推算,试算,我也算不出上天的公平。因为我摸不准那杆秤。 若是说,最近的痛苦对我来说是一种生活的磨砺,那好,我受着!但我想说,也是我唯一想说的,上天,不管你如何磨砺我,你欠我一个完整幸福的家! 若是种种宿命我在劫难逃,我受得了的时候定会受着。 我不想再罗列近期的各种不顺和痛苦,罗列,只是再一次伤自己。没有意义。 我不...

iteye_11690的博客 327

计算机毕设:线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

1764

这代码写的,狗屎一样 !

原标题:编码规范 | Java函数优雅之道(上)来源:高德技术1.导读昨天在技术交流群,有位读者吐槽刚刚接手的代码(文章标题),代码全篇无格式,无注释,多个嵌套不打括号,函数命名不规范,...

GitHubDaily 973

【SpringBoot 3.x 第92节】Spring Modulith:构建模块化单体架构(基于 Spring Boot 3),一文带你搞透(超详细)!

🏆本文收录于《滚雪球学SpringBoot 3.x》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    该专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。

**My Coding Family** 1002

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

mmp格式转换_mmp是什么意思

近日网上忽然流行起mmp这个词,很多人都不知道mmp是什么意思,下面就让小编来给大家介绍一下吧。mmp是什么意思该词的意思为“妈 卖 批”的缩写形式,属于四川话里面常见的脏话之一。随着网络语“我有一句妈卖批不知当讲不当讲”的走红开始被大家所熟知,随之成为常用的网路流行语。当然,mmp还有别的意思MMP (线粒体膜电位)MMP(Mitochondrial membrane potential)是线粒...

weixin_39553753的博客 2591

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

这波教你怎样写出不被同事骂的代码!

前两天看到一则代码注释里出现各种脏话的消息,这让我想起了之前看过的一个很有意思的开源项目。 有一段时间,这个项目简直火得不行~ 教你怎样写出不被同事骂的代码。 项目一共列出了 20 条建议之多,这里月亮挑几条最有意思的分享出来。

weixin_50205273的博客 204

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

微软开源了操作系统,注释中藏着一个大秘密!

前些天,微软开源了DOS4.0,这其实算不上什么大新闻,因为:1. 这是个非常古老的,没人用的操作系统;2. 这不是DOS第一次开源了,1.25版,2.0版在6年前已经开源了有意思的是,网友发现,开源以后,一个叫做mzbik的人心急火燎地修改了其中一行代码的注释:这个注释的意思是:“脑子有问题的Tim Patterson......”mzbik把Tim Patterson改成了缩写TP,其他保持不...

码农翻身 1543

程序员代码这么写,同事纷纷上门祝贺!

前两天看到一则代码注释里出现各种脏话的消息,这让我想起了之前看过的一个很有意思的开源项目。 有一段时间,这个项目简直火得不行~ 教你怎样写出不被同事骂的代码。 项目一共列出了 20 条建议之多,这里月亮挑几条最有意思的分享出来。

weixin_50205273的博客 337

正则replace 回调函数里接收的参数是什么?

前言 我们都知道 replace 在做替换处理方面会很常用,通常也是第一个会想到的方法。replace 第一个参数可以传入 string 或 RegExp,第二个参数可以传入 string 或 一个回调函数。在能够传入回调函数之后,事情就开始变得不简单了(如果有用过map,filter等函数,你就知道传入回调函数的强大)。在做替换处理时,我们能够获取到更多的有效信息,处理的手段也可以更...

weixin_30505751的博客 422

不被同事骂的代码规范,程序员们值得拥有!

前两天看到一则代码注释里出现各种脏话的消息,这让我想起了之前看过的一个很有意思的开源项目。 有一段时间,这个项目简直火得不行~ 教你怎样写出不被同事骂的代码。 项目一共列出了 20 条建议之多,这里月亮挑几条最有意思的分享出来。

weixin_50205273的博客 320

简单代码的秘诀

原文链接:https://medium.com/javascript-scene/the-secret-of-simple-code-a2cacd8004dd成为10倍开发人员有捷径可走吗...

趣谈前端 289
上一篇: 为什么老实人很难当领导?
下一篇: ChatGPT时代,别再折腾孩子了
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值