- 13
- 0
- 约7.05千字
- 约 7页
- 2021-01-24 发布于北京
- 举报
2018/9/3 极客时间 | 程序员进阶攻略
讲堂 程序员进阶攻略 文章详情
14 | Bug的反复出现:重蹈覆辙与吸取教训
2018-09-03 胡峰
14 | Bug的反复出现:重蹈覆辙与吸取教训
朗读人:刘飞 13′35′′ | 6.23M
Bug 除了时间和空间两种属性,还有一个特点是和程序员直接相关的。在编程的路上,想必你
也曾犯过一些形态各异、但本质重复的错误,导致一些 Bug 总是以不同的形态反复出现。在你
捶胸顿足懊恼之时,不妨试着反思一下:为什么你总会写出有 Bug 的程序,而且有些同类型的
Bug 还会反复出现?
1. 重蹈覆辙
重蹈覆辙的错误,老实说曾经我经历过不止一次。
也许每次具体的形态可能有些差异,但仔细究其本质却是类似的。想要写出没有 Bug 的程序是
不可能的,因为所有的程序员都受到自身能力水平的局限。而我所经历的重蹈覆辙型错误,总结
下来大概都可以归为以下三类原因。
1.1 粗心大意
人人都会犯粗心大意的错误,因为这就是 “人” 这个系统的普遍固有缺陷(Bug)之一。所
以,作为人的程序员一定会犯一些非常低级的、因为粗心大意而导致的 Bug。
/column/article/14668 1/7
2018/9/3 极客时间 | 程序员进阶攻略
这就好比写文章、写书都会有错别字,即使经历过三审三校后正式 的书籍,都无法完全避免
错别字的存在。
而程序中也有这类 “错别字” 类型的低级错误,比如:条件if 后面没有大括号导致的语义变
化, 、 和 的数量差别,++ 或-- 的位置,甚至 ;的有无在某些编程语言中带来的语义
差别。即使通过反复检查也可能有遗漏,而自己检查自己的代码会更难发现这些缺陷,这和自己
不容易发现自己的错别字是一个道理。
心理学家汤姆·斯塔福德(Tom Stafford)曾在英国谢菲尔德大学研究拼写错误,他说:“当你
在书写的时候,你试图传达想法,这是非常高级的任务。而在做高级任务时,大脑将简单、零碎
的部分(拼词和造句)概化,这样就可以更专注于更复杂的任务,比如将句子变成复杂的观
点。”
而在阅读时,他解释说:“我们不会抓住每个细节,相反,我们吸收感官信息,将感觉和期望融
合,并且从中提炼意思。”这样,如果我们读的是他人的作品,就能帮助我们用更少的脑力更快
地理解含义。
但当我们验证自己的文章时,我们知道想表达的东西是什么。因为我们 这些含义都存在,所
以很容易忽略掉某些感官(视觉)表达上的缺失。我们眼睛看到的,在与我们脑子里的印象交
战。这,便是我们对自己的错误视而不见的原因。
写程序时,我们是在进行一项高级的复杂任务:将复杂的需求或产品逻辑翻译为程序逻辑,并且
还要补充上程序固有的非业务类控制逻辑。因而,一旦我们完成了程序,再来复审写好的代码,
这时我们 的逻辑含义都预先存在于脑中,同样也就容易忽略掉某些视觉感官表达上的问题。
从进化角度看,粗心写错别字,还看不出来,不是因为我们太笨,而恰恰还是进化上的权衡优化
选择。
1.2 认知偏差
认知偏差,是重蹈覆辙类错误的最大来源。
曾经,我就对 Java 类库中的线程 API 产生过认知偏差,导致反复出现问题。Java 自带线程池
有三个重要参数:核心线程数(core)、最大线程数(max)和队列长度(queues)。我曾想
当然地以为当核心线程数(core)不够了,就会继续创建线程达到最大线程数(max),此时
如果还有任务需要处理但已经没有线程了就会放进队列等待。
但实际却不是这样工作的,类库的实现是核心线程(core)满了就会进队列(queues)等待,
直到队列也满了再创建新线程直至达到最大线程数(max)的限制。这类认知偏差曾带来线上系
统的偶然性异常故障,然后还怎么都找不到原因。因为这进入了我的认知盲区,我以为的和真正
的现象之间的差异一度让我困惑不解。
/column/article/14668
您可能关注的文档
最近下载
- ¤东芝cv600调试OBM操作A(1).doc VIP
- 2026年上海市16区初三语文一模试题课外文言文今译汇编.docx VIP
- 13-EHR人力资源数字化管理咨询项目 86.pptx VIP
- (部编版)语文四年级上册寒假课外阅读“天天练”30篇,附参考答案.doc
- 江苏省苏州市2025-2026学年五年级上学期1月期末数学试卷三(有答案).docx
- 2025年山东省德州市中考生物真题(含答案解析).docx VIP
- 人力资源共享服务中心(HRSSC)建设方案.pptx VIP
- GB 342722025《小型游乐设施安全规范》解读.pptx VIP
- 陕22N1供暖工程建筑标准图集.docx VIP
- The Simpsons《辛普森一家》第一季第一集完整中英文对照剧本.docx VIP
原创力文档

文档评论(0)