服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

脏话越多,代码越好!

日期: 来源:黑客技术与网络安全收集编辑:码农翻身刘欣
来自:码农翻身(微信号:coderising)

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


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内核是优秀代码的典范(详情参见这一篇文章《漫画 | 因为用了C语言,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架构师,近20年从业经验,"码农翻身"公众号作者,畅销书《码农翻身》作者,用故事讲解技术是拿手好戏。拨开技术迷雾,轻松了解技术本质,从"码农翻身"开始。

---END---


推荐↓↓↓

相关阅读

  • VsCode 各场景高级调试技巧!

  • 来源:网络人生苦短,快学Python!VsCode自从诞生以来,以其各自优异的特性迅速走红。尤其是对于前端开发小伙伴来说,几乎成为必不可少的开发工具。所以,熟练掌握VsCode的各自使用技巧
  • GoDaddy 源代码被盗,遭多年持续攻击

  • 聚焦源代码安全,网罗国内外最新资讯!编译:代码卫士web托管巨头GoDaddy 披露称,不明攻击者窃取公司源代码并在多年来攻陷其 cPanel 共享托管环境后在服务器上安装恶意软件。GoDa
  • 奇安信代码安全实验室招人啦!

  • 聚焦源代码安全,网罗国内外最新资讯!(点击图片保存或转给有需要的亲人朋友们~)推荐阅读奇安信代码安全实验室研究成果成功入选国际顶会USENIX Security 2023奇安信代码安全实验
  • 每日安全动态推送(2-16)

  • Tencent Security Xuanwu Lab Daily News• [Tools] Reversing The EVM: Raw Calldata:https://degatchi.com/articles/reading-raw-evm-calldata ・ EVM中calldata编码与

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 脏话越多,代码越好!

  • 来自:码农翻身(微信号:coderising)你在读开源代码的时候有没有遇到过这种注释?What the fuck ?Dude,WTFFuck this !我遇到过,每次都忍不住笑,心想老外可真是性情中人,遇到不爽的地方