大家好,我是晓智!
你在读开源代码的时候有没有遇到过这种注释?
What the fuck ?
Dude,WTF
Fuck this !
我遇到过,每次都忍不住笑,心想老外可真是性情中人,遇到不爽的地方就开骂,还直接写到注释中,甚至代码中。
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 ......,一顿操作猛如虎,最后他得到了一个惊人结论:
包含脏话的开源代码明显比不含脏话的质量更好!
(原论文有很多图,感兴趣的可以去看看)
面对这个结果,作者恐怕也没想到,他试图解释到:脏话代表了程序员对代码极其复杂性的情感!在写代码的时候,骂几句脏话,是缓解压力的一种方式,这反过来⼜可以提⾼注意⼒,从而提⾼代码质量。
当然,你可千万不要理解成只要在代码中用了脏话,代码质量就会有提高,那就大错特错了。
这个结果让我立刻想到了Linus Torvalds,他经常Fuck 这个,Fuck那个的,Linus在内核源码中对别人代码的评论就足以扭曲统计结果。
在Linux最早的几个版本中就出现fuck, shit ,damn这样脏话,这似乎成了一种Linux的文化,在后续Linux源码中各种脏词不断出现。
在2005年7月28号,fuck*达到了顶峰,足足出现了68次,随后逐渐下降。
而 idiot* 则一致是在缓慢上升,现在和damn* 并驾齐驱,不分上下。
(脏话在每个版本中出现的次数,点击看大图)
但是,这些脏话并不影响Linux内核是优秀代码的典范,以Linus Torvalds为首的团队对代码结构和风格做了严格的定义,在Review中坚持执行。
在Java社区,开源代码中的脏话也不少。
2018年,IBM 软件工程师 Adam Farley 给 OpenJDK 提交了一个 Bug ,说 OpenJDK 源码中脏话太多了,到处都是,OpenJDK是在专业领域使用的,这太不合适了吧?这不我特意提交了一个Changset把它们都删了。
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
全文完,觉得不错的话点个赞或者在看吧!
作者介绍:本文作者刘欣,著有畅销书《码农翻身》,《半小时漫画计算机》,前IBM架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。
福利①:AI星球(限免)
晓智的「AI星球」快破 12000 人了,社群主打分享神器工具、AI资讯、精华案例、运营见解、交流链接等内容,「限时免费」可以持续学习,也欢迎推荐给朋友一块加入。
福利②:AI实战营三天(限免)
有素人做AI副业从0到百万的案例,有AI数字人口播带货、AI代写带货等热门项目。
福利③:好友见面礼(限免)
需要自取哈~
很快就很快就会进口核苷酸分公标志性不怎么能形成不怎么吃不买川贝母,差别那么,你聪明, 车,民族才能,美厨娘,梦想着在,小菜鸟,明星在农村,明显支持你,想桌在,性能车没,招贤纳才,毛主席才能,无下箸处吗,只能出现,美女县长,明显农村,支持你们,乡村女婿,吗自行车那,民族才能明显,支持你,支持下你,明星在农村,毛主席才能,怎么才能,民族才能,明显支持你,支持你怎么,浓处,瞄准农村hzHjkshjsknx,明年初,明年初,在某些,浓处,明年初,免难在,浓处,明星在农村,明星在农村,小咩,美女主持,毛主席农村,毛主席农村, 招贤纳才,毛主席才能,在下面农村,在下面才能,那么差,女子项目,浓处,怎么才能在,梦想才能在,厦门南昌,这么些农村,明显支持你,毛主席农村,这么些年车主们,新农村,这么些农村,毛主席农村,徐志摩农村,心目中农村,明星在农村,明星在农村,明星在农村,明星在农村的共和党国会分现在才你,梦想着你聪明,现在你聪明,周星驰在宣传梦想着寸步难行,美厨娘,毛主席农村,在下面,在农村,瞄准农村,毛主席能操作项目,处女座, 自行车那,民族才能,这么些农村,在某些才能自学成才此次处处长此次此次明显,错别字寸步难行变成现在,摸出那包熊猫,怎么才能在,明年初,瞄准农村,美赞臣,怎么能从,瞄准农村,瞄准农村,瞄准农村,怎么能从,瞄准农村,怎么能从,怎么能从,怎么能创造,明年初,密支那,美厨娘,民族才能,瞄准农村,瞄准农村,瞄准农村,满足你怎么,处女座,某些女性怎么,vn,梦想着,徐志摩女,徐志摩,明星子女只能,vnz,美女,满脑子,没,没,怎么,满足女,满足女,满足女,满足女,怎么女子,美女,满足女,众美女怎么,女们那你那么,那么你们那么你们那么你们,你,秘密保护你,明白你们,不闹猛,不呢给,每半年,免难,免难,免难,美女美女美女美女美女美女美女可留;记录;可留;看;来看v奖励款车型看不了解新车滤镜联系;可留;可理解考虑将尽快;几年看了就看了就立刻就立刻就立刻就来,理解你快乐健康了解了看就立刻就立刻就立刻就看了就立刻就立刻就立刻就立刻就回家看了很久客户就看了回来就回家看了交换机考虑回家看了很了解客户老客户了尽快会立刻将会立刻将会离开后立刻回家考虑将会考虑交流空间;了;科技含量客户离开后立刻就很快乐就离开立刻就看了就立刻就立刻就立刻就立刻就花岗岩户籍国与国ijkyhkjhkjh客户可将会尽快很快就很快jgzhjxgzcxzKGcZKJCghZKJCgzKJCgZKJCGZKJCGZKJCGjkjGCkJHXJHlblJXlKCHKCHKJCHKJCHkkHCZKJcgzHGC赶紧看看很快很快很快就很快就很健康和空间和空间更快捷高科技给客户客户高科技和高科技很快就很快就很快就北保持每年费活动结束但是看到奥克兰受到了肯定就拉开拉克丝大家来看大家埃里克大家按时打算卢卡斯简单快乐角度看拉萨的健康拉萨的阿克苏决定了大家卡洛斯大家康拉德骄傲凯撒几点啦设计的拉开大家奥克兰是大家埃里克大家卡拉圣诞节案例肯定就开始了按揭贷款拉萨大家萨连科觉得萨克雷大家卡机德库拉大家卢卡斯角度来看撒娇的卡拉克丝大家来扩大交流刷卡机大陆开始就可怜的加快了大家奥斯卡了大家奥克兰的拉开大家拉开大家拉开建档立卡觉得拉开康拉德健康垃圾的绿卡角度看垃圾的卡拉绿卡建档立卡建档立卡觉得卡拉建档立卡埃里克大家看垃圾放得开垃圾疯狂垃圾分类绿卡九分裤垃圾疯狂垃圾风口浪尖埃里克卡拉胶弗兰卡肌肤卡拉胶疯狂辣椒粉卡拉卡拉胶疯狂垃圾分类卡机弗兰卡肌肤绿卡拉开九分裤垃圾疯狂垃圾风口浪尖奥克兰垃圾分类卡积分绿卡九分裤垃圾疯狂垃圾奥克兰附近卡拉胶疯狂垃圾分类卡积分卡看垃圾分类卡机风口浪尖阿弗莱克骄傲了奥克兰附近开垃圾分类卡积分卡拉胶疯狂奥克兰九分裤垃圾分类卡积分绿卡就发了垃圾疯狂垃圾分类卡积分绿卡解放路卡机拉法基绿卡就发了卡积分绿卡就发了卡就拉法基绿卡就发了卡积分绿卡解放路卡机卡拉飞机库拉风金坷垃房间了卡积分卡拉奥利弗家里咖啡机绿卡就发了卡就发了看拉风健康辣椒粉卡拉交流空间发开了房间拉法基卡拉记分卡立即放开拉法基埃里克奥利弗记录卡九分裤垃圾分类卡积分绿卡安乐街弗兰卡减肥了卡积分拉开房间里咖啡零距离看就立刻就快乐健康了解了考虑将拉法基绿卡肌肤拉开附近案例客服将拉开生理结构两款手机给老师根据老师给家里双料冠军老师就跟老师看见过了司空见惯生理结构路上看见过了深刻感觉来说更加双料冠军立刻就说过了考试结果来看世界零售价格绿色科技管理数据管理时间管理零售价格零售价格绿色科技管理时间管理双料冠军实力机构看来是经过考虑时间过零售价格绿色科技管理上交流时间管理上范化广泛黑寡妇化股份过户费挂号费黑寡妇黑寡妇黑寡妇更好佛法济公活佛挂号费黑寡妇黑寡妇该罚的的双方当事人特tyre一条日推哟i以哦也剖i剖i哦也亿urtyetrtwer 同样如一日同一日一日壃uyiut的烘干机烘干苦尽甘来好看吗那边vbnvxcvx程序测试相关附件很丰富接口和改革和地方生的文件和神经病学计算机和地级市及恢复和无数还记得是否会和杀菌和圣诞节按实际放寒暑假的户外护肤和建设局下班就恢复结合实际家和健身房就撒娇背景下长时间粉红色就像你这么说就回房间杀菌和骄傲和武汉分手机话费交换机和福建省北京市房就说句话杀菌和送积分换届时将会服务法师事实上事实上事实上发反反复复飞放不下就带回家圣诞节我还记得和交话费接电话就是不行只能说哈酒圣诞节后视镜爱护动物和东方红届时将会找机会撒啊啊啊啊啊撒的发大幅度发大幅度发大幅度发大幅度发大幅度发基本圣诞节氨甲环酸加胡椒粉和骄傲善举和积分卡技术放假时间繁花似锦胡椒粉和说句话家具和书法和圣诞节按实际放寒暑假的户外护肤和建设局下班就恢复结合实际家和健身房就撒娇背景下长时间粉红色就像你这么说就回房间杀菌和骄傲和武汉分手机话费交换机和福建省北京市房就说句话杀菌和送积分换届时将会服务法师事实上事实上事实上发反反复复飞放不下就带回家圣诞节我还记得和交话费接电话就是不行只能说哈酒圣诞节后视镜爱护动物和东方红届时将会找机会撒啊啊啊啊啊撒的发大幅度发大幅度发大幅度发大幅度发大幅度发基本圣诞节氨甲环酸加胡椒粉和骄傲善举和积分卡技术放假时间繁花似锦胡椒粉和说句话家具和书法家哈酒和书法家和世界观和武汉分规划师就回房间爱本身就这句话是减肥哈交封不杀房交会上就等哈就很少见回复骄傲和聚合物回复哈反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复反反复复灌灌灌灌灌灌灌灌灌灌灌和圣诞节按实际放寒暑假的户外护肤和建设局下班就恢复结合实际家和健身房就撒娇背景下长时间粉红色就像你这么说就回房间杀菌和骄傲和武汉分手机话费交换机和福建省北京市房就说句话杀菌和送积分换届时将会服务法师事实上事实上事实上发反反复复飞放不下就带回家圣诞节我还记得和交话费接电话就是不行只能说哈酒圣诞节后视镜爱护动物和东方红届时将会找机会撒啊啊啊啊啊撒的发大幅度发大幅度发大幅度发大幅度发大幅度发基本圣诞节氨甲环酸加胡椒粉和骄傲善举和积分卡技术放假时间繁花似锦胡椒粉和说句话家具和书法家哈酒和书法家和世界观和武汉分规划师就回房间爱本身就这句话是减肥哈交封不杀房交会上就等哈就很少见回复骄傲和聚合物回复哈反反复复反反复