脏话越多,代码越好!

VSole2023-02-27 13:48:26

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

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

......

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

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
Bob大叔在《Clean Code》一书中谆谆教导我们:要对变量、函数、类精心命名,避免耍小聪明,别使用双关语。这个结果让我立刻想到了Linus Torvalds,他经常Fuck 这个,Fuck那个的,Linus在内核源码中对别人代码的评论就足以扭曲统计结果。而 idiot* 则一致是在缓慢上升,现在和damn* 并驾齐驱,不分上下。在Java社区,开源代码中的脏话也不少。3天后,经过 OpenJDK 社区讨论,大家认为:Damn 和 Crap 不算脏话
笔者涉猎大数据治理领域有6年的时间,负责过政府、军工、航空、大中型制造企业的数据治理项目。技术部门大多是以数据中心或者大数据平台为出发点,受限于组织范围,不希望扩大到业务系统,只希望把自已负责的范围管好。
不知道差友们还记不记得,去年的 7 13 日,B 站发生了一件大事。它毫无征兆的崩了……( 如果忘了的小伙伴,可以看 这篇文章 )至于为啥崩了,当时大家谁也心里没个底。不过吹起水来可是一套一套的,什么停电啊,起火啊,程序员 rm -rf /* 跑路啊……说的是个天马行空。
所谓打点,就是拿到一台机器的shell。对个体而言,这种条件下,个人技术成为了主导因素,也就是说,一个红队人员快速打点能力的强悍与否,成为了一个普通红队和优秀红队的差别所在。这其中最肝的一个部分,莫过于信息搜集了,纯体力活。三板斧其三 sql注入:这个更加老熟人了,注入之后,低权限,直接gg,高权限,试试吧,看能不能上shell。
这样一旦运行的服务器宕机,就把备份的服务器运行起来。冷备的方案比较容易实现,但冷备的缺点是主机出现故障时备机不会自动接管,需要主动切换服务。当一台服务器宕机后,自动切换到另一台备用机使用。
密码管理器NordPass分享了一份今年最流行的密码Top200榜单,榜上有名的究竟会是哪些密码呢?
供应商参与5G网络云化建设情况下,运营商运维管理复杂度将同步提升。网络切片导致新威胁5G网络切片在提供差异化网络服务的同时也带来了新的安全挑战。调查显示,一些与5G网络相关的误导性报道信息正在加剧这种担忧。例如,5G救护车试验表明了可以改善对危重患者的院前急救过程。研究人员表示,这些安全功能在非独立5G网络和独立5G网络上的应用表现存在较大差异。
以云计算、大数据、5G、物联网等为代表的新一代信息技术 的迅猛发展,有力推动了石油石化企业数字化转型的进程。与此 同时,也带来了更为严峻的网络安全挑战。由于参会人数较,房源和就餐环境有限,会议食宿根据回执安排,没有返回 回执的人员,不接受注册,不安排食宿。
开放商用区块链网络(OCBN)正式发布
数据安全已成为事关国家安全与经济社会发展的重大问题。美国国土安全部甚至向全美商业企业发布《数据安全商业咨询》,要求防范来自中国的产品。目前各国领导人在会面时,数据安全几乎成为必谈议题。但美国认为,新时代需要新霸权,美元霸权将会被数据霸权取代。经研究,总体国家安全观中的任何一个领域的安全均会受到数据安全的影响。当前,我国已初步完成数据安全顶层设计,基本建立政策法规体系。
VSole
网络安全专家