如何提问

简介

Stack Overflow是世界上最大的编程类问答网站, 大多数程序员或多或少和它有所接触: 即使你从来没有在它上面提问或回答过,在搜索很多技术问题的时候, 结果的第一页往往就有几条链接到Stack Overflow的问题。

Stack Exchange

Stack Overflow是编程类的问答社区, 但还真有人把它当成通用的问答社区了, 问些完全无关的问题。 其实, Stack Overflow 是有一系列兄弟网站的(目前已经有100+), 统称 Stack Exchange, 涵盖很多主题, 比如数学、物理、化学等科学类, 服务器管理、Latex、数据库等计算机类, 中文、俄文、日文等语言类, 详细的列表看这里https://stackexchange.com/sites.

问什么样的问题

允许的主题包括: 具体的编程问题、软件算法相关、通常只有程序员用的软件工具相关等。 有些主题是比较容易弄错的, 比如一般的电脑操作问题, 应该去Super User:https://superuser.com/(热门的 Linux/Unix, 和Ubuntu还有独立的站点), 专业的服务器问题, 应该去Server Fault:https://serverfault.com/。这些都不属于编程类的问题, 同样是编辑器, Vim/Emacs/Atom相关的问题是可以的,因为基本只有程序员会用这些工具, 而 Word/记事本相关的一般就不可以。

Stack Overflow 要求问题必须是practical, answerable questions based on actual problems that you face,这是什么意思呢?

  • 开放式的问题是不允许的,比如“你为什么喜欢PYTHON?
  • 其次, 问题应该不需要很长的篇幅来回答
  • 寻求资源的问题应该避免,如 “要完成某某工作, 有什么Python的库可以用”
  • 问题不要基于凭空的假设,要基于实际的难题

如何提问

提问前准备

  • 尝试通过搜索网络
  • 尝试通过阅读手册
  • 试着通过阅读常见问题
  • 尝试过debug
  • 通过问一个有经验的朋友来寻找答案
  • 如果你是一个程序员, 试着通过阅读源代码来找到答案

如何提问

关于如何提问题请参考:http://www.catb.org/~esr/faqs/smart-questions.html#translations

1. 直入主题,使用有意义的特定标题

Stack Overflow不是论坛, 它的目标是希望成为编程类问答的一个超级数据库, 所以每个问题都不止是为了帮助提问者本人, 更重要的是希望将来能够帮助到每一个遇到同样问题的人。

2. 用清晰、语法、拼写正确的语言书写

首先不要有太低级的语法错误、单词拼写错误等,让其他人理解起来很费力;再有就是逻辑表达清晰,让别人能明白你的思路,不要前言不搭后语。如果英语水平比较初级,可以模仿,找几个类似的问题或答案,把其中的文字复制下来保留论述句子结构,然后把里面的一些单词替换为自己的关键词。改完之后再多看几遍,它也代表着对阅读问题人的尊重。

3. 关于内容

把你尝试过步骤,依赖的环境一定要写清楚,相关的日志也要贴出来。如果是编程类问题,也要把代码贴出来,因为大多数问题都需要代码才能清晰的表达。

对于提供什么样的代码, Stack Overflow给出了一个可参考的标准: MCVE, 即Minimal, Complete, and Verifiable example

Minimal:最小的, 也就是尽可能的去掉和问题无关的部分。 如果你贴了一个几百行的代码, 很少有人愿意花时间去仔细看。 构造最小化例子的过程本身也是debug的过程。

Complete:完整的, 一个简单的判断是:别人看到问题, 可以通过复制你提供的代码复现出问题吗?

Verifiable:可验证, 描述问题尽可能具体, “the code doesn’t work”这样的描述就很不好。 如果编译不过, 要加上编译错误信息; 如果运行报错, 也同样要加上具体的错误信息; 如果结果和你的预期不一致, 要说清楚你的预期结果是什么, 为什么会这样想。

4. 关于格式

Stack Overflow的编辑器是Markdown格式的, 所以在填写问题时要注意格式。

5. 标记正确答案

你问了问题,也有别人给你解答了,一定要记得标记正确答案,最好在评论里告诉回答者结果并表示感谢。这样是给回答者付出心血的应有回报,自己也能得到积分

需要注意问题

  • 在Stack Overflow查找解决问题的代码,在最前面的答案往往是很古老的代码,以前有效,但现在并不是最合适的,切记在浏览过问题的所有评论和代码后再去决定使用合适的代码,也要注意右边栏上关于相关问题的推荐。
  • 注意问题和回答的发布日期,但时间最久的代码也不一定在现在使用时无效,也可能work。
  • 对不能很好解决需求的问题,进一步进行搜索,使用这个问题的几个关键字来找出其他类似的问题和回答。
原文地址:https://www.cnblogs.com/Tanwheey/p/13791351.html