作者 | Matt Lacey

译者 | 弯月,责编 | 屠敏

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

“只加两行代码,为什么用了整整两天时间?!”

这个问题看似合理,但其背后隐藏着一些可怕的假设:

  • 代码行数=工作量

  • 代码行数=价值

  • 所有代码行都一样

但这些统统不属实。

有人花了整整两天的时间改好了代码,但为什么我们回头去看的时候会觉得这些改动如此简单?

  • 因为问题报告对如何再现的描述非常模糊。

我花了好几个小时才成功地重现了问题。有些开发人员会立即去找报告问题的人,在获得更多信息之后再展开调查。而我会尽力使用已提供的信息。我知道有些开发人员不喜欢改bug,因此他们会想法设法逃避这种工作。声称信息量不足是及时甩锅的一个好办法,看起来你像是在努力帮忙,但又无需做任何工作。我知道报告错误非常困难,我非常感谢那些报告错误的人。我会尽可能利用已有信息,实在没办法再去请求报告错误的人提供更多信息,目的是为了表达对他们的感谢。

  • 因为报告的问题与某个功能有关,但我不熟悉这个功能。

我很少使用与这个问题相关的功能,而且我并没有接触过与该功能相关的具体细节。因此,我花费了很长时间来理解如何使用这个功能,以及这个bug与软件交互的具体过程。

  • 因为我花了很长时间调查引发问题的真正原因,而不仅仅是流于表面。

如果某些代码抛出了错误,则你只需把它包装在try..catch语句中即可抑制错误。没有错误,就没有问题。对吗?不好意思,在我看来,把问题藏起来并不等同于解决问题。掩盖错误很容易引发其他意料之外的副作用。我不想留到将来,再与它们打交道。

  • 因为我调查了除了问题报告的步骤之外,是否还有其他方法可以再现这个问题。

通过一组再现步骤可以很容易地让错误浮现,但实际上它可能涉及更深层的问题。找到问题的确切原因,并研究解决问题的所有方法,才能提供有价值的见解。比如代码的实际使用方式,可能其他地方存在有待解决的问题,或者存在代码不一致,导致某个代码路径中引发了错误,而其他路径则不会。

  • 因为我花时间验证了代码的其他部分是否会受到类似问题的影响。

如果某个错误引发了这个bug,那么代码库的其他地方可能也存在相同的错误。我可以借这个机会仔细检查一下。

  • 因为如果我找出了问题的根源,那么就可以寻求最简单的解决方法,同时引入副作用的风险也很小。

我不希望用最快捷的方法修复问题。我希望修复这个问题之后将来不会引起混乱或引发其他问题。

  • 因为我对此次代码变更进行了彻底的测试,并验证了它能够解决所有受影响代码路径下的问题。

我不想依靠他人来测试我做的更改是否正确。我不希望以后等到我完全忘记此次更改之后再发现某个bug,迫使我不得不再次回头看这些代码。来回切换思维费时费力,又令人沮丧。我不希望让专职的测试人员再来检验同一个更改。

我不喜欢改bug的工作,部分原因是因为这种工作让人感觉是我之前的失误造成的。而我不喜欢改bug的另一个原因是,我更喜欢从事新的工作。

问:有什么是比改bug更糟糕的工作呢?

答:反复修复同一个bug。

我愿意花时间确保每次遇到的bug都会被完全修复,这样我就无需再面对这个bug,也无需再花时间调查、修复并测试这个bug。

原文:https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞两万字长文读懂 Java 集合!
☞V神演讲干货全送上!关于以太坊2.0,你想知道的都在这里!
☞大写“惨”?三次改变世界、却被无情出局的程序员大牛!
☞我还没考试,算法就说我的物理一定挂科
☞中台架构详解(上) | 大咖说中台
☞Eth2 验证者快速启动器发布,还有什么惊喜是我们不知道的?
点分享点点赞点在看

只加两行代码,为什么用了整整两天时间?相关推荐

  1. 你只写了两行代码,为什么要花两天时间?

    原文 | https://www.mrlacey.com 作者 | Matt Lacey 我花了两天时间,写了两行代码. 对于真正的程序员来看,这可能是一个合理的事情,但背后不理解程序员的人,往往会做 ...

  2. 开发无法复现是什么意思_你只写了两行代码,为什么要花两天时间?

    原文 | https://www.mrlacey.com 作者 | Matt Lacey 我花了两天时间,写了两行代码. 对于真正的程序员来看,这可能是一个合理的事情,但背后不理解程序员的人,往往会做 ...

  3. 上传至微信服务器端的图片在界面中展示的时候,显示此图片来自公众平台未经允许不可引用,解决办法只需加两行代码

    此图片来自公众平台未经允许不可引用 上传至微信服务器端的图片在界面中展示的时候如上图不显示图片显示 为此图片来自微信公众平台,未经允许不可引用 解决办法: 在界面的html页面头部head加入以下这两 ...

  4. 只需两行代码,2080Ti 就能当 V100用,这个炼丹神器真牛!

    作者 | 陈大鑫.青暮 话说人工智能江湖门派众多且繁杂,好似那大脑中的神经网络一般,但繁杂中却仍然有着一统的迹象...... 许久之前,ML派坐落美利坚合众山中,百年来武学奇才辈出,隐然成江湖第一大名 ...

  5. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表

    gRaphael 是一个致力于帮助开发人员在网页中绘制各种精美图表的 Javascript 库,基于强大的 Raphael 矢量图形库.你只需要编写几行简单的代码就能创建出精美的条形图.饼图.点图和曲 ...

  6. 神操作!两行代码,提速 13 倍!让 Python 飞一般的感觉!

    Python 本身是一门运行较慢的语言,因此对于计算场景,最好的优化方式就是优化代码写法.你可以使用现有的科学计算库:比如 Numpy 和 Scipy.但如果想要在不使用低级语言(如 CPython. ...

  7. 两行代码实现图片压缩

    两行代码实现图片压缩 相信大家经常会碰到上传图片的情景,如果图片过大,上传又有限制.这个时候就需要对图片进行压缩处理,截图有可能模糊或者尺寸依然较大,在线网站压缩又可能有隐私顾虑. 作为一个伪技术人员 ...

  8. 使用 Numba 让 Python 计算得更快:两行代码,提速 13 倍

    Python 本身是一门运行较慢的语言,因此对于计算场景,最好的优化方式就是优化代码写法.你可以使用现有的科学计算库:比如 Numpy 和 Scipy.但如果想要在不使用低级语言(如 CPython. ...

  9. iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

    原文地址:https://github.com/ChenYilong/ParseSourceCodeStudy/blob/master/02_Parse的网络缓存与离线存储/iOS网络缓存扫盲篇.md ...

最新文章

  1. 性能测试TPS与用户之间转换
  2. 金城教授:基于手绘草图的图像检索技术研究
  3. Failed to convert property value of type java.lang.String to required type java.lang.Integer for pro
  4. 对于如何删除redis中geo存入的坐标
  5. 简单的Android对文件进行读写操作
  6. Java并发包--线程池框架
  7. linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤
  8. videojs中文文档详解_你的项目需要一个高质量README文档!
  9. Linux网络协议:当eBPF遇上Linux内核网络 | Linux内核之旅
  10. Python并发编程之线程中的信息隔离(五)
  11. 内部人示范(野生项目笔记02)
  12. java速成(11/30)抽象类 abstract
  13. 手工编译Flex SDK 多国语言包
  14. linux看caj文件格式,CAJ 文件扩展名: 它是什么以及如何打开它?
  15. Go入门-Go语言环境安装与GoLand第一个项目创建
  16. 目标检测的模型haartraining培训
  17. python自动化赚钱-薅羊毛 | Python 自动化带你轻松赚钱(完结版)
  18. pytorch中的数据加载(dataset基类,以及pytorch自带数据集)
  19. C++ 两个矩阵的乘法
  20. 回顾系列2-部落战争

热门文章

  1. [Swift]LeetCode1044. 最长重复子串 | Longest Duplicate Substring
  2. 计算机视觉的深度学习实践【第二期】视频教程
  3. NOIP模拟 整数划分(数论,质因数分解,状压DP)
  4. Mac os 下的文件权限管理
  5. opatch java.lang.OutOfMemoryError:Java heap space错误一例
  6. Prototype.js介绍及扩展(待续)
  7. 《数值分析》学习笔记 ·002——误差知识
  8. 矩池云上TensorBoard/TensorBoardX配置说明
  9. 最近很火的数据动图python_12个流行的Python数据可视化库总结
  10. mysql 5.7多层级json查询_MySql5.7 json查询