Google的案例研究:開發者是怎么搜代碼的?
寫代碼的人肯定都搜過代碼吧。既然有現成的,何必重新發明輪子呢?在代碼庫日益豐富、搜索功能越來越高級的背景下,代碼搜索已經成為一項關鍵的 軟件開發活動,而且實際上也是一項非常有用的技能。那開發者一般都是怎么去搜索代碼的呢?針對這個問題,Google 特地在內部進行了一項案例研究。研究采用了調查和日志分析相結合的辦法,得出了一些有趣的結果。
研究人員在 15 天內對 Google 的 27 名軟件工程師進行調查,然后結合搜索日志份分析發現,開發者搜索代碼的行為越來越頻繁了,基本上每工作日平均要進行 5 次搜索會話、12 次代碼查詢,比普通用戶的搜索行為還要多。
開發者代碼搜索的目的各種各樣:比方說代碼作用是什么?代碼在哪里實例化?代碼為什么會這樣工作?誰負責編輯代碼?如何執行一項任務等。其中想 了解代碼怎么調用(How)的搜索占了 22%,想知道某段代碼是干什么(What)用的占了搜索的 20%,要查找某個類在哪里(Where)被實例化的占到 8.5%,想要了解為什么某個東西會失敗的占到了 10%,而想要了解是誰什么時候改動了代碼的占 5%。
開發者的代碼搜索工具有很多,包括 Koders、Google、Google Code Search、Krugle [14], SourceForge、GitHub、CodeGenie、Sourcerer、Satsy 等,其中不乏利用了更加語義化的功能,這對于提高搜索的命中率很有幫助。
研究認為,相對一般用戶,開發者執行搜索的頻率非常高,因此,搜索的速度和精度會對開發者的生產力造成很大影響。此外,開發者搜索的很大一部分 精力都放在代碼樣例的查找上,所以必須加強對編程例子的支持。第三點是開發者搜索的一般都是自己熟悉或比較熟悉的本地庫,尋找的都是多少有些熟悉的代碼, 鑒于此,開發環境可能最好把代碼搜索功能給集成進來。
你為什么要搜代碼?一般用什么工具搜代碼?去哪里搜?搜代碼又有什么秘訣呢?不妨在評論欄貢獻你的答案。
Google 的案例研究論文可參見此處。