神刀安全网

提问须知

在知乎,有很多人邀请我回答编程问题,但很多问题问得没有章法,让人看了只好默默关闭窗口。这里我给点提示:问编程问题,最重要的是能让别人能轻松复现你说的现象,最好的办法是提供 SSCCE 。贴代码最好的方式是 gist.github.com ideone.com

S hort, S elf C ontained, C ompilable, E xample

所谓 SSCCE,就是能复现你描述的现象的完整能编译运行的(短)代码。你提供的代码要让我拿到之后立刻就能编译运行。不要只贴那个你认为关键的成员函数,你不把完整的 class 贴出来,我怎么知道这个成员函数用到的那些成员变量是什么类型的?

如果你问的问题本身是编译错误,那么你提供的代码应该能让我在我的机器上用我的编译器立刻复现出同样的错误。或者直接用 http:// ideone.com 贴代码和编译器输出。

如果以上方法都行不通,那复现故障还有一个终极办法,你建一个 VPS,复现现象,给我 root 或者 sudo 权限,我有空登上去看看。本条只适用于 muduo 相关问题。

Do’s and Don’ts

1. 贴代码不要放截屏,更不要拿手机拍屏幕。为了执行你的代码,难道要我手工把代码敲一遍?

2. 提供完整信息,不要只提供你认为重要的信息。如果我两三个来回还不能获得我想要的信息,多半就会放弃继续回答了。

a. Linux 还是 Windows  b. Linux 发行版。不要光说 Ubuntu,谁知道你用的是 12.04 还是 14.04?  c. x86 还是 ARM  d. 32-bit 还是 64-bit  e. gcc 版本,是系统自带还是自己编译安装  f. boost 版本,是系统自带还是自己下载的  g. 完整的编译参数  h. muduo 版本、cmake 版本、在干净环境下第一次运行 ./build.sh 的完整输出 

如果以上信息都没有提供,我回答的时候会采用我的缺省值:Linux x86-64,Ubuntu 14.04,系统自带的 gcc + boost,github 上最新的 muduo。

3. 不要假定别人跟你有相同的信息,特别是那些你认为不言而喻习以为常的事,在网上向陌生人提问事要明确地表述出来,比方说各种自创的缩写。再比方说经典书籍如 APUE、UNP、C++ Primer、Effective C++ 都有不止一个版本(有的同一个英文版还有多个中译本),如果你要问相关问题,一定要把版次、作者译者、出版社、出版日期等信息说全。不要光说 APUE 第 123 页如何如何,我怎么知道你手上那本 APUE 的页次是不是跟我手上这本相同?此时为了节约回答者的时间,可以贴图。

4. 消除歧义。你为了表达一个意思,用了一个词语或表述,你觉得说清楚了。由于高手知识面比较宽,他知道这个词语或表述有更多的含义,而不清楚你指的是其中哪层意思。

5. 减少错别字,不要用脏字。标点也要正确,是 C/C++ 不是 C/C++。通篇逗号和叹号的问题一般意味着提问的人看不懂我的回答,所以我不会回答。

6. 贴 Python 代码注意格式,不要让缩进都没了。遇到全部顶格的 Python 代码,我会认为提问者根本没有诚意。

7. Cheap questions only deserve cheap answers. 我的时间比问问题的人的时间值钱,否则的话应该是他拿钱雇我解决问题,而不是在网上发帖求免费答案。因此,请体现尊重,不要把你试了五分钟没成功的问题发上来,而指望我花20分钟给你解答。把你试验的过程发出来,让我感受到你是认真且下了功夫的,会增加回答的几率。

8. 不要只看网上的零散教程来学习基础知识,入门经典书总要读一遍。搞 C++,至少读一遍 C++ Primer 和 Effective C++。搞网络编程,至少读一遍 Unix Network Programming 第一卷。搞 Linux 多线程编程,至少读一遍 APUE。如果你问的问题在 UNP 上直接就有答案,我多半没心情抄书回答。

9. 我一般不会回答匿名用户的提问,因为没有 identity。我不关心你是谁,但是我想知道我们以前是否有过交流,你以前提过哪些问题,别人在回答你之前的问题的时候你的表现如何,从而判断我是否值得回答你提出的这个问题。现在有人先实名提问再邀请我,等我回答之后就匿名,我也不会继续 follow up。如果这种情况一再发生,我以后会在第一次回答的时候把提问者的 ID 放到答案里。

10.

其他想到了/遇到了再补充。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 提问须知

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址