前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何提问:为什么X-Y问题会浪费大家的时间?

如何提问:为什么X-Y问题会浪费大家的时间?

作者头像
青南
发布2022-04-07 19:16:23
8180
发布2022-04-07 19:16:23
举报
文章被收录于专栏:未闻Code未闻Code
X-Y问题会严重浪费我们的时间,浪费我们的精力和资源。我们一定要避免出现X-Y问题。

那么,什么是X-Y问题呢?我举两个例子:

请大家看下面这张图:

这个同学写的爬虫代码运行一段时间以后,内存会急剧上升,因此它觉得上Requests 有内存泄漏的问题。于是大家都在回答怎么检测哪一行代码导致了内存泄漏,以及出现了内存泄漏应该怎么办。甚至有人为了复现这个问题,专门写了很长的代码,搞了几十个线程,循环请求一个网站几十万次来验证Requests在什么情况下会内存泄露。

很多人劳神费力搞了半天,最后无论怎么样都没有办法触发这个内存泄漏的问题。于是让那个提问的人把代码发上来。大家一看代码才发现,这个同学的代码里面,在while True中不停创建线程,导致内存占用越来越高。他的整个问题跟Requests没有半毛钱关系。

第二个例子,肯定在你身上也发生过。你的代码报错了,报错原因是xxx,于是你去网上搜索xxx报错是什么原因,怎么解决。看了一下午,问题始终没有办法解决。最后让大神来从头看了一下你的代码,发现问题其实是yyy。

所谓的X-Y问题,就是发生了一个问题X,但是你根据问题的表象,以为这是问题Y,于是尝试去找Y的答案,从而浪费大量的时间和人力。

所以,如果你要提问,你必须要确保你问的是真正问题的解决方案,而不是你以为的问题的解决方案。如果你不知道真正要解决的问题是什么,为了避免出现误解,你需要先把自己的业务场景描述清楚,你期望的结果是什么,实际的结果是什么。然后给出一段脱敏后的,能复现问题的最小代码Demo,这样别人在分析问题的时候,才能帮你找到根本原因,而不是被你自以为是问题的Y牵着鼻子走。

在公众号粉丝群里面,有不少同学提问题不讲科学,毫无逻辑,上来就说:xxx报错了是什么原因?。然后就没有然后了。

报错的原因千千万,谁知道你这个报错是什么原因,你至少把具体报错信息截图发一下,再把报错位置的代码发一下啊。

问题都不会提,就不要怪别人不想回答你了。因此,再次建议大家,提问之前做一些准备,避免浪费大家的时间:

  1. 这个问题的背景是什么?
  2. 你期望的结果是什么?
  3. 实际上运行的结果是什么?是报错了还是结果错误?
  4. 如果是报错,把报错信息截图发上来
  5. 准备一段能够稳定复现你的问题的代码。这一段代码需要满足:
    1. 提前单步调试你的代码,把所有不必要的环节全部省略,能写死的变量全部写死,只保留直接触发问题的关键代码
    2. 不要超过40行
    3. 使用截图发送,而不是直接把文字发送到聊天窗口,带上行号
    4. 给出能够触发问题的输入
  6. 如果你做不到第5条,那就不要把一段包含几百行代码的文件发送出来了,没有人想去看这么长的代码,你又没给钱

那么如果有人的问题不是代码报错,而是类似于FastAPI怎么返回二进制文件这种问题的话,搜索引擎会比群友更快回答你。

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档