你在阅读开源代码的时候遇到过这种评论吗?什么鬼?伙计,WTFF操这个!以前遇到过,每次都忍不住笑,觉得老外真是君子,遇到不愉快的地方就骂,直接写在注释里甚至代码里。Bob叔叔在书中语重心长的教导我们《Clean Code》:变量、函数、类的命名一定要慎重,切忌自作聪明,不要双关语。那么在注释甚至代码中发誓会影响整体代码质量吗?真的有人做过这个研究。德国卡尔斯鲁厄理工学院的学生扬·斯特雷梅尔发表了一篇名为《在开源代码中脏话的使用和代码质量之间有相关性吗?》的论文。为了研究这个问题,作者从GitHub上抓取了3800个脏话。C代码库,7600个没有脏话的C代码库,用自家软件SoftWipe分析其是否符合编码标准,并一一打分。然后他发挥自己在统计方面的本事,利用中心极限定理、Bootstrapping、Significancetesting、Jarque-Beratest、Shapiro-Wilktest、Q-Qplot、Kolmogorov-Smirnovtest……,操作猛如虎,在最后,他得出了一个惊人的结论:包含脏话的开源代码质量明显比没有脏话的要好!(原论文中有很多图片,有兴趣的可以去看看。)面对这样的结果,作者估计是没想到的。他试图解释:脏话代表了程序员对极其复杂的代码的感情!在写代码的时候,骂几句脏话是一种缓解压力的方式,进而可以提高专注力,从而提高代码质量。当然,你一定不明白,只要在代码中使用脏话,代码质量就会提高,那就大错特错了。这个结果让我立马想到了LinusTorvalds,他经常Fuckthis,Fuckthat,Linus在内核源码中对别人代码的评论足以扭曲统计结果。像fuck、shit和damn这样的脏话出现在Linux的前几个版本中。这似乎已经成为一种Linux文化,各种脏话不断出现在后续的Linux源代码中。2005年7月28日,fuck*出现68次达到顶峰,之后逐渐下降。而白痴*一直在缓慢上升,现在和该死的*不分上下,势均力敌。不过,这些脏话并不影响Linux内核是优秀代码的典范(详见本文《漫画 | 因为用了C语言,Linux内核代码一团糟?》)。以LinusTorvalds为首的团队严格定义了代码结构和风格,并在Review中坚持执行。在Java社区中,也有很多骂开源代码的事情。2018年,IBM软件工程师AdamFarley向OpenJDK提交了一个bug,称OpenJDK源代码中脏话太多,到处都是。OpenJDK用于专业领域。这不合适吗?这不,我特意提交了一个Changset,把它们都删掉了。三天后,经过OpenJDK社区的讨论,大家一致认为:Damn和Crap不是坏话!还有3个f**k,是上游的罪魁祸首(后面会跟进处理),文件里只有一个f**k,全是脏话,删掉.为什么程序员喜欢用脏话在源代码中表达自己的想法?代码是程序员每天都要面对的工作对象。代码确实有复杂的情绪,有时候需要一种情绪的宣泄。看到一段看不懂的高级代码,什么鬼?很难得到一段复杂逻辑的所有分支和边界条件。代码真的很乱,大家不要乱动!花了不少精力写逻辑,却发现出现了无法处理的异常,该死,该死,该死……我们国内的程序员好像比较矜持,很少在代码里??写脏话,而且更喜欢抱怨公司,吐槽制度,不是吗?但是,你必须记住一件事:当代码注释中出现脏话的时候,你要小心了,不要轻易去碰下面的代码,否则就是一个大坑!参考资料:https://cme.h-its.org/exelixis/pubs/JanThesis.pdfhttps://www.vidarholen.net/contents/wordcount
