善用網路搜尋來解決問題#

在沒有網路的環境下工作,開發者的生產力會明顯下降。當你的程式出錯時,網路搜尋和與其他開發者協作是強大的助力。

搜尋技巧#

使用雙引號搜尋錯誤訊息#

一個非常有效的技巧是將錯誤訊息用雙引號包起來貼進搜尋引擎。引號會指示搜尋引擎尋找完全匹配的頁面,大幅提高搜尋品質。

其他有用的搜尋關鍵字包括:

  • 出問題的 library 或 middleware 名稱
  • 對應的 class 或 method 名稱
  • 回傳的 error code
  • 函式名稱(越冷門越好,例如搜尋 PlgBltBitBlt 效果更好)

嘗試使用同義詞搜尋,例如除了 “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