[分享] 询问程式问题的方式

楼主: Neisseria (Neisseria)   2016-04-10 21:21:45
不限于 Ruby 语言,有关程式设计的问题都可以试试以下方式
程式问题的内容可考虑加入以下内容:
- 问题本身
- 相关软件的版本:包括系统、编译器/直译器、模组、数据库等
- 预期结果
- 实际结果
- 错误讯息 (如果有的话)
- 一小段可重现问题的程式码
见下文的 SSCCE 或 MCVE
依照这个流程思考问题,有时候,在这个过程中,问题自然而然就解决了。
有时候,会看到有些板友说“我按照某个流程写的程式,结果出了问题。”这种方式
相当没有效率,首先,想解决问题的板友要先去了解这个流程;接着,即使这个流程是
正确的,也不代表原 PO 的程式就是正确的。程式是照自己写的流程在跑,不是照自己
想的流程在跑,算法对不代表程式就对。(要不然 bug 那里来的 = =...)
提供程式码给别人相当重要,不仅仅表示你自己明确知道问题何在,别人也可以很快地
重现你的问题。有些网友会用贴图的方式,但是,这种方式相当不怡当,想帮你解决问题
的人,还要重新输入你的程式码,有些人会因此失去耐心。如果在讨论区直接贴一大段未
排版的程式码,也是不恰当的;这些程式码没有良好的排版而难以阅读,想帮忙的人,还
得重复复制贴上的过程。比较好的方式,是用一些专门的网站分享程式码片段。
这种可重现 bug 的范例,至少有两种参考格式:
- SSCCE: http://sscce.org/
- MCVE: https://stackoverflow.com/help/mcve
对于想除错的板友,值得一读相关内容。
以下是一些贴静态程式码的网站:
- http://pastebin.com/
- https://gist.github.com/
- http://pasted.co/
- http://paste.ideaslabs.com/
以下是可线上执行程式码的网站:
- https://ideone.com/:多种语言
- http://codepad.org/:多种语言
- https://glot.io/:多种语言
- https://jsfiddle.net/:网页前端
- https://jsbin.com/:网页前端
- http://codepen.io/:网页前端
可看“提问的智慧”,虽然这是一篇旧文,仍然值得一读。
[原文] http://www.catb.org/~esr/faqs/smart-questions.html
[中译] https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way
另外,推荐 Effective Debugging (有中译本)。这本书提示许多除错的观念
和方法,不限于某种特定的程式语言;苦于无法有效除错的板友,可以参考看看。
板工和该出版社没有对价关系,单纯个人推荐。

Links booklink

Contact Us: admin [ a t ] ucptt.com