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的案例研究论文可参见 此处。