zoukankan      html  css  js  c++  java
  • 如何提问

    简介

    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。
    • 对不能很好解决需求的问题,进一步进行搜索,使用这个问题的几个关键字来找出其他类似的问题和回答。
  • 相关阅读:
    java实现三角螺旋阵
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人员排日程
    java实现人民币金额大写
    为什么使用剪切板时都用GlobalAlloc分配内存(历史遗留问题,其实没关系了)
    深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good
    Delphi中array of const应用
  • 原文地址:https://www.cnblogs.com/Tanwheey/p/13791351.html
Copyright © 2011-2022 走看看