善用網路搜尋來解決問題#
在沒有網路的環境下工作,開發者的生產力會明顯下降。當你的程式出錯時,網路搜尋和與其他開發者協作是強大的助力。
搜尋技巧#
使用雙引號搜尋錯誤訊息#
一個非常有效的技巧是將錯誤訊息用雙引號包起來貼進搜尋引擎。引號會指示搜尋引擎尋找完全匹配的頁面,大幅提高搜尋品質。
其他有用的搜尋關鍵字包括:
- 出問題的 library 或 middleware 名稱
- 對應的 class 或 method 名稱
- 回傳的 error code
- 函式名稱(越冷門越好,例如搜尋
PlgBlt比BitBlt效果更好)
嘗試使用同義詞搜尋,例如除了 “hangs” 也試 “freezes”,除了 “disabled” 也試 “grayed”。
使用程式碼搜尋引擎#
對於 API 使用方式的問題,可以透過程式碼搜尋引擎(如 Black Duck Open Hub Code Search)查看其他人如何使用某個函式,觀察傳入的參數和回傳值的處理方式。
nowtime = mktime(time->tm_year+1900, time->tm_mon+1,
time->tm_mday, time->tm_hour, time->tm_min,
time->tm_sec);這個範例揭示了 mktime 的年份是從 1900 起算的 offset,月份從 1 開始——這些都是容易出錯的地方。
評估搜尋結果#
- 重視 StackExchange 系列網站的回答
- 不要只看被接受的答案,也看投票數較高的其他回答
- 閱讀回答下方的留言,可能包含更新的技巧或修正
如果精心構建的搜尋查詢找不到任何有用結果,很可能是你對問題的診斷方向有誤。對於熱門的 library 和軟體,你幾乎不可能是第一個遇到某個問題的人。
當搜尋無果時#
- 在 Stack Overflow 上提問,附上 SSCCE (Short, Self-Contained, Correct Example)
- 也可以使用線上 IDE(如 SourceLair、JSFiddle)呈現問題
- 如果懷疑是 open-source 專案的 bug,到該專案的 bug tracker 開 issue
- 撰寫問題和範例的過程本身,有時就能幫你找到解答
聯繫 open-source 開發者時要特別禮貌和周到——他們大多是無償提供支援。
重點回顧#
- 將錯誤訊息用雙引號包起來進行網路搜尋
- 重視 StackExchange 網站上的回答
- 如果以上方法都無效,自己發問或到專案開 issue