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