16

只加了 2 行代码,为什么你用了 2 天?

 3 years ago
source link: https://www.leiphone.com/news/202008/Uh8ZtjI9FQ4Y5dPG.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

FzYBRrf.png!mobile

字幕组双语原文: 只加了 2 行代码,为什么你用了 2 天?

英语原文: You've only added two lines - why did that take two days!

翻译:雷锋字幕组( 明明知道

这个问题看似合理,但其实话里预设了:

  • 代码行=工作量

  • 代码行=价值

  • 所有的代码行都是相同的

这些预设都不对。

为什么一个看起来很简单的修改要花两天时间才能完成?

  • 因为发现这个问题时,对如何重新创建它的描述含糊不清。我花了好几个小时才弄到一份可靠的复制品。一些开发人员会立即回到报告问题的人那里,要求在调查之前获得更多信息。我试着用所提供的信息做尽可能多的事情。我知道有些开发人员不喜欢修复 bug,所以他们会尽一切努力摆脱它。声称“还不够”是一个很好的方式,让人觉得你在尽力帮忙,但却什么都不用做。我知道报告错误可能很难,我对任何这样做的人表示感谢。我想通过在询问更多细节之前尽可能多地使用所提供的信息来表示对错误报告的赞赏。

  • 由于报告的问题与功能有关,我不太熟悉。它所涉及的功能是我很少使用的,也不是我曾经详细使用过的。这意味着我花了更多的时间去理解如何使用它,以及它如何与有缺陷的软件相互作用的细微差别。

  • 因为我花了时间调查问题的真正原因,而不仅仅是查看问题。如果某些代码出错,你可以仅仅尝试把他掩盖起来。没有error,就没有问题,对吧?不过,对我来说,让问题看不见和解决问题不一样。“接受”错误很容易导致其他意想不到的副作用。我不想在将来的某个时候不得不面对它们。

  • 因为我调查了是否有其他方法来解决相同的问题,而不仅仅是报告的复制步骤。一组复制步骤可以很容易地使错误看起来在一个地方,而实际上它可能是更深的。找到问题的确切原因,并查看所有实现原因的方法,可以提供有价值的见解。比如代码实际是如何使用的,哪些地方可能存在其他可能需要解决的问题,或者它可能显示代码中的不一致性,这意味着错误是在一个代码路径中导致的(或处理的),而不是在另一个代码路径中。

  • 因为我花了时间验证代码的其他部分是否可能受到类似的影响。如果一个错误导致了这个bug,那么同样的错误也可能在代码库的其他地方发生。现在是检查的好时机。

  • 因为当我发现了问题的原因后,我就开始寻找最简单的方法来解决问题,同时将带来副作用的风险降到最低。我不想要最快的解决办法。我想要一个不太可能在将来引起混乱或其他问题的修复。

  • 由于我对修正进行了彻底的测试,并验证了它解决了所有受影响的不同代码路径的问题。我不想依靠别人来检验我所做的是正确的。我不希望在将来发现错误,并且当我在心里继续前进时,不得不回到这段代码。上下文切换既昂贵又令人沮丧。我希望尽可能避免让一个专门的测试人员再次查看“相同的”更改。

我不喜欢修bug。一个原因是我感觉他们是以前失败的结果,另一个原因是我更喜欢做新事情。

还有什么比修bug更难受的呢?

不得不重复修复相同的bug。

花时间确保遇到任何错误时都已完全修复,这样就不需要多次面对、调查、修复和测试。

雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。

团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。

如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。

Z36Bvqa.png!mobile

雷锋网雷锋网 (公众号:雷锋网)

雷锋网版权文章,未经授权禁止转载。详情见 转载须知

VJjyIf.jpg!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK