[分享] 詢問程式問題的方式

作者: 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