如何优雅地使用 Stack Overflow?
Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,不会弹出任何广告,销售信息,JavaScript 窗口等。
1、完整读一遍 FAQ。
2、主观问题不要问.
比如:
C++和C哪个好用? 我该学C#还是Java?你最爱哪款Text Editor?
必close。
3、概念问题慎重问。
比如:
STL是啥?C++11有啥新特性?lambda和functor有啥区别?
这种问题很容易成为duplicate,导致down vote。提问前要反复搜索,确定没有人问过才能贴。
4、代码问题大胆问。
提问前要把疑点范围缩到最小。以C++为例,当你为现有class添加新成员函数时,编译器报错。那么有三个部分务必贴出来。
其一,class body 内的相关部分,无关部分在代码里注释下就行了:
// other members,etc。
其二,该成员的implementation,包括该成员函数的代码和其调用的函数的代码。
其三,编译器的完整报错信息。
加好标签,扔一句
"Why? How to fix it?"
就OK了。
用代码说话,可以最大程度上弥补语言不足,而且这种问题不会被vote成duplicate。
5、格式比行文重要!
行文是硬功夫,需要日积月累。格式方面就简单地得多:引用的文字务必用Ctrl+q,代码Ctrl+k。多留意rep上k的人的提问,很快就清楚了。
6、善用tag。
相关tag尽可能多的加上去,最多可以加5个。无关tag千万不要加。比如C的问题就不要填C++,C++的问题就不要C的 tag。tag填错了容易把不相干的人引进来,人家恼了没准儿就给个down。。一个down vote 扣2rep。
7、不要说“thank you!”。
SO反对没有讨论价值的comments。心存感激,就up 他的answer或comment。
实在想扯淡就开个chat room。100rep就可以开chat room了。
8、提问之后,不要离开电脑。
SO的响应速度非常快,马上会有comment、answer或者编辑建议之类的需要你处理。
9、别忘记accept别人的answer。
答主有15rep的加分,题主加2rep。
10、随时编辑别人的帖子。
2000rep之前,只能建议修改,一旦采纳,就有2rep的加分。
要知道,英语不灵的人太多了,经常出现拼写错误,莫名其妙的格式更是比比皆是。随时编辑之,顺便刷rep。
11、多问几次,就好了。
12、然后,post your answer吧~
13、若仍没信心的话,可以联系我。
可以代贴,或者讨论一下语言如何组织。
P.S. Stack Exchange旗下还有很多有意思的子站,不妨转转。
Chinese Language居然落后于德、法、日、西班牙语子站之后,记得去捧场~。
更新:
u1、珍惜每个疑惑。
每个问题和疑惑都代表你踩到了知识边界以外的东西。此时就出现了决策上的两难:
a、我是猛查资料,猛学呢?
b、还是暂时放下,日后再说呢?
正确的策略是判断此知识点与知识边界的距离。
若在知识边界以外很远的地方,那就选b,日后再说。强行学习只会舍本逐末、事倍功半。但问题是我们自己很难判断该知识点与知识边界的距离。便捷的办法就是把问题PO到SO上去。只要能把事儿说清楚,SO n多大牛会迅速给出解答的。
据此决策:进,为知识版图开疆拓土;退,为卷土重来埋好伏笔。
举个栗子:
假设你C++学习两三周,刚懂一点儿constructor、destructor什么的。这时编译器报错:
rvalue reference %¥%#%%……&##%
你看不懂,就把代码和报错信息发到SO上。瞬间蹦出个很nice的大叔,200多k的rep,全站排名一两百,C++ gold badge 好几枚。大叔无比耐心地回了个巨长的answer,从C++11的新特性开始扯,什么move constructor, move assignment , std::move ,rvalue reference和lvalue reference的区别,列了一堆链接要你看。该答案瞬间引来n多up vote,你的question也因此被up vote n多。
——此时,你要做的是:1、按照答案修改代码。2、待围观群众向大叔致敬的差不多了accept他的answer。3、知道这是跟move之类的C++11新特性有关,就齐了。
一个月内不要碰这个帖子,就当什么都没发生过。一个月后,且开始系统学习move semantics了再翻出来细读。
u2、勇于PO代码,善于追问。
PO代码出来常有意外收获。比如:经常会有牛儿指出:你的变量命名不规范,bad practise什么的。此时要comment追问一下:这么写都有什么弊端?我应该怎么写?
代码这个东西,能得到大牛的指点会少走很多弯路。
当然,PO代码之前,要做好篇幅控制,无关代码不要贴,相关代码精简到最小才贴。这不但是尊重别人的劳动,也是对自己很好的训练。
u3、不急于accept answer。
即便有人已经解决了你的问题,也要等等再accept。这样做有两个好处:
其一,多收集不同的声音。若长时间都没有不同意见,就更加确认当前answer的正确性。这种情况下该答案会收到更多的up vote,你的question也可能收到些up。
其二,若有不同声音出现,他们之间会掐起来,从而引来更多围观,最佳答案也会随之浮出水面。如果英语过关就跟着讨论。否则可以干点儿别的事儿,过段时间再收割answer。
u4、珍视站友对你帖子的编辑。
他们往往会从两个方面编辑你的帖子:
1、格式;
2、拼写和语法。
仔细阅读,你收获的不单是技术上的,更是英语上的。另外,2000rep以上的站友可以直接编辑你的帖子。不要见怪,不要见外。
一,提问前一定要搜索,先在 Google 搜索,然后在 StackOverFlow 上搜索,当实在找不到答案后再提问。
对于那些靠搜索就能得到答案的问题,StackOverFlow 上的广大群众是毫不留情的,反对票数量蹭蹭得往上加啊。
提问:
1,In my limited experience with .. 谦虚表达自己在某方面的经验
2, I am searching for a long time on net. But no use. Please help or try to give some ideas how to achieve this. 找了很久未果,求助攻
3,after searching around for a decent XX solution and found that everything out there was difficult to use. 找了N种方法都发现太TM难了。
4,I' ve looked around and apparently I've got the choice between these libraries/ solutions: 说明自己是努力搜索过的,然后目前有了哪几种方案
5,which seems it's a promising solution. 看起来是一个好解决方案
6,Ive tried multiple variations of this, but none of them seem to work. Any ideas? 试了很多种方法都无效,求助
7,Wanted to know if it's good practice to do that and what would be the best way to do that? 我的做法是否正确,是否有更好的法子?
8,Thanks in advance. 先行谢过
回答问题:
1,If I understand you correctly, you want to xxx 如果我没理解错,你想。。
2,Can you provided more details about your use case ? Can you provide more xml and code setting the url ? 提供更详细
当别人回答你的问题后,你对回答的评论:
1,thank you for your answer sincerely 感谢回答blabla
这些感觉就差不多了,其他说来说去也都是这些套路,回答问题或者提问时多看看别人的表达习惯,也可以做记录,好记性不如烂笔头嘛。说明一下,上面的中文不是翻译,只是一个说明,方便我快速定位的。