拿到一份开源项目,快速定位感兴趣的功能代码

现在越来越多的开源项目了,令人收藏不暇,有时只是觉得对方的某个 feature 特别喜欢,但很多人可能打开了其代码找了半天找不到关键所在。其实,如果运用了 Android Studio 带给我们的一些查找功能,任何一份新的开源代码摆在我们眼前,我们都可以快速定位到感兴趣的功能代码。

所以,今天我来分享一下这个经验,造福人间2333,以两个例子做说明吧:

一、快速定位 BlackLight 的「收藏微博」功能代码

Snip20150425_1说明:BlackLight 是一个 Material Design 的微博客户,更多介绍可以看这个帖子:一个 Material Design 的微博客户 。我是前天拿到它的源代码的,我想把它微博信息页面中的收藏微博功能提取出来,做一个快捷收藏的功能……它的代码量不小,你不知道作者给这个页面取名叫什么 Activity,你也不知道你就算找到这个 Activity,再要定位到这个具体地方要多久(这个例子是针对 option menu,原本如果手动定位,也是比较简单的,但大部分没那么容易)。

关键点1:对于整个项目源代码进行「find in path」查找这个功能的字符串「收藏微博」四个字,如下:

Snip20150425_2

出来的结果是,找到了,并且找到的位置是在 strings.xml 文件中:

Snip20150425_4

关键点2:我们可以双击跳转到这个 strings.xml 文件中的「收藏微博」位置,然后把光标放在它的 name 上,右键鼠标(或者快捷键),出现「find usages」,结果就会显示它被使用的地方:

Snip20150425_6

哦。。。才知道这个名为「微博信息」页面,作者给它命名的是「SingleActivity」。。。如果不借助这两三下快速查找,你能想到?。。。然后,我们果断跳过去,跳过去到达 SingleActivity 之后就很直接了,这个功能明显是在 onOptionsItemSelected 这个方法内,于是我们很快可以找到:

Snip20150425_7

就是它了!

总结:关键点其实很简单,入手的时候,先全局搜索(find in path)你要的功能它的名称,一般是定位到 strings.xml,再对这条 Item 的 name 进行查找它的使用(find usages),定位到它被使用的地方,基本就很接近目标了。

如果大家还不明确,请看第二个例子……

一、快速定位 EhViewer 的 ripple 加载新页面功能:

说明:额,这个 EhViewer 嘛,是一个(hentai)绅士阅读器,我也是昨天晚上朋友说它 MD 做得不错才去看看它的代码的。发现它有一个「点击查看更多」的地方,点击了之后,会以 ripple 的动画效果展开一个新页面显示内容,很棒。于是想一探究竟……

Snip20150425_8

入手:仍然是对全局进行搜索,find in path <- “点击查看更多”,和上面一样,很快定位到 strings.xml 文件中的这一行:

1
< string name = "click_more" >点击查看更多</ string >

右键点击这个 click_more,选择 find usages,很快又精准定位到了:

Snip20150425_9

看,定位到这个 Activity 是如此简单粗暴~

过去看一下,发现目标并不能直接关联这个动画功能的代码,只是显示这样:

1
mCommentMoreText.setText(R.string.click_more);

而且你会发现你对于这个 mCommentMoreText 找来找去(使用页面内的搜索,command + f)都没发现它的 setOnClickListener 是在哪,这时也不能放弃,因为我们知道,目标肯定很近了……想了一下,猜想,作者可能是对于这个 mCommentMoreText 的父容器布局进行绑定监听器,于是……

关键点:找到 findViewById 位置,跟踪跳转到 xml 布局文件

……于是我就页面内搜索(command + f)这个 mCommentMoreText,马上定位到它的findViewById:

1
mCommentMoreText = (TextView) findViewById(R.id.comment_more_text);

按住 command 点击这个 comment_more_text,可以跳到它的 xml 布局文件,发现它的父布局是一个 LinearLayout,并且 id 是 detail_comment,果断对这个 id 进行 find usages,会跳转到它的 Java 代码位置:

1
mDetailComment = (LinearLayout) findViewById(R.id.detail_comment);

再页面内搜索 mDetailComment,果然得到它绑定了 mDetailComment.setOnTouchListener(this); 那么接下来就非常直接了,顺藤摸瓜,我们马上去 onTouch 看看(虽然是 mDetailMore,可能是另一层父控件),目标 get!:

Snip20150425_10

总结:这一回合,我们关键还是在 find in path / find usages 的基础之上,更多的 command + F 页面内查找,一般基本定位后都难逃我们的掌心,方法其实都很简单,一回生二回熟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
花money购买的资料,感觉不错,拿出来分享,资料内容包括软件项目管理师经典案例;九大知识领域范文欣赏;项目管理师经验分享;项目管理师大纲和格式。详细大纲如下: 项目管理师论文写作指南 6 1.大纲中的要求 6 2. 为什么会觉得论文考试难 6 3.论文的格式与写作技巧 7 3.1 格式要求 7 3.2 写作进度把握 7 3.3 论文选题 7 3.4 论文提纲 7 3.5 正文写作 7 3.6 摘要写作 8 4. 论文考题分析 8 5. 如何准备论文 10 论文实例 10 1. 论文论题 10 2. 范文一:论信息系统项目的整体管理 11 3. 范文二:论信息系统项目的整体管理 13 4. 范文三:论信息系统项目的整体管理 15 第一篇 项目管理(进度、风险) 18 IT项目管理 18 IT项目管理的三个条件、五个步骤 18 IT项目管理的五大错误 23 IT项目管理:问题、体系、方法 24 成功的软件项目需要几点要求 26 对软件项目管理的探讨 27 给项目管理一双慧眼 33 工程项目管理的新挑战—可持续发展 37 管理的三化与六法 40 管理项目失败的教训 41 论项目管理中的量化管理 43 浅谈如何实行有效的项目管理 45 浅谈项目管理 46 浅谈项目管理机制 54 浅析软件项目管理中的10个误区 58 如何估算大型项目的工作量 60 如何计算项目的投资收益率 61 如何领导员工成为项目管理者? 62 简谈项目的冲突的管理 65 IT外包项目管理 66 如何应对零星IT项目采购 68 软件公司项目管理的三大误区 69 软件开发项目管理的简单方法 70 软件企业如何面对项目管理 71 软件外包项目管理3点体会 72 软件项目成功的要素 72 软件项目管理的成功原则 75 软件项目管理原则谈 77 软件项目管理中的一些误区 80 软件项目失败因素分析 80 什么是项目战略计划 81 实施项目问题管理的七步走 82 述诉项目管理 84 项目管理8要点 85 项目管理13禁忌 87 项目管理:经济发展的驱动力 87 项目管理成功的12个关键原则 90 项目管理的20个关键问题 91 项目管理的20条锦囊妙计 92 项目管理的成功方程式 94 项目管理的概念 95 项目管理的概念及项目的过程管理 97 项目管理的三角链 99 项目管理的三角难题与解法 101 项目管理的是与非 103 项目管理理论中关于软件项目外包采购管理的探讨 107 项目管理三角形 111 项目管理体系:战略好还要管理好 112 项目管理要突出解决好四个问题 113 项目管理业绩为上 115 项目管理应树立的理念 117 项目管理中问题与对策探讨 118 应用P3E进行IT项目管理初探 120 影响项目的因素及经验总结 129 用项目总结来减少问题的重复发生 130 有效控制质量、工期、成本三大目标 133 在项目管理中面对面交流最重要 134 IT项目如何做好进度管理 135 对“项目时间管理”的认识和体会--“赶工和快速跟进”在工作中的运用 137 工程项目成本/进度综合控制方法及应用 138 软件开发项目进度控制浅谈 141 项目的生命周期 145 项目管理过程之进度控制 147 项目管理系列之进度和成本管理 148 IT业项目管理与人才环境 151 论项目管理中人的管理 154 如何组织软件开发团队 156 如何组织一个高效的开发团队 158 软件项目团队建设的“三个中心” 160 团队管理101招 161 项目管理中"以人为本"的思想 163 “样板参照法”——项目管理团队建设的有效工具 165 IT应用的风险管理 168 风险项目投资选择与管理 172 工程项目管理中的风险分析与防范 173 项目风险管理 174 项目风险管理解决方案及应用 178 项目风险管理研究 181 项目风险缓解、监控和管理 184 项目管理中风险评价的必要性 185 需求阶段的风险分析 189 怎样做好软件项目风险计划 190 工程项目成本管理从降低采购成本入手 191 “模拟成本制”让绩效动起来 192 项目成本管理 193 项目执行中的成本控制 195 管理好基础架构和开发团队 197 流程因谁而变——谈流程管理的驱动因素 198 论项目合同管理 200 项目管理中的组织结构 204 浅谈项目建议书、可行性研究、项目评估、项目后评价的作用及其区别 206 项目评估 208 项目前期管理的一种科学方法——可行性研究工作 209 软件项目过程管理保证软质量 213 项目管理过程之质量管理 214 项目经理如何避免降低软件质量 215 项目经理如何确保工程质量 217 项目质量管理 219 怎样确保项目评估的精确 220 项目采购管理 221 项目采购和合同管理 222 项目策划的方法 223 项目策划的流程 225 项目策划的原则 229 项目策划特征 232 项目策划原理 234 项目管理中的人力资源管理和沟通管理 237 第二篇 信息安全 240 计算机安全的项目管理 240 第三篇 信息监理 243 分公司对项目监理工作的管理 243 信息化工程须引入项目监理 244 信息系统工程监理特点 245 论信息系统工程——ERP项目监理 246 信息工程监理中的三大控制目标及关系 249 电子商务项目监理 250 第四篇 信息化(企业) 252 CIO如何制定高效IT项目提案? 252 ROI-项目经理的朋友还是敌人 254 成为一个积极主动的项目经理 255 从CIO看企业信息化需求 256 打造一个成功的项目经理 257 你是不是一个优秀的项目经理人 258 如何成为一个积极主动的项目经理 259 软件项目经理所必需具备的素质 259 微软资深经理人的项目管理经验 262 我国信息化建设现状及政策法律环境 265 我国政府信息资源开发的现状、问题及措施 268 “十一五”信息化规划需要四个“新” 270 信息化需要四步走 271 信息化为什么需要项目管理? 272 信息化项目监理 早做早安心 273 信息化项目实施与应用的一个质量标准体系 274 信息化项目“手术”如何做 成本管理是关键 277 信息化项目与实施效益评估体系初探 279 信息技术应用项目的战略风险分析 280 信息化与企业战略管理 284 信息化与企业经营战略 284 商业企业的信息化建设基本策略 291 城市信息化建设的原则•框架•途径 294 信息化建设的项目管理计划、实施和控制兵法 296 ERP是一个集成立方体 项目经理作用非凡 300 正确认识ERP项目高风险性 305 电子商务项目成功的关键 306 电子政务项目的风险管理 308 如何规避电子政务项目的风险? 310 如何实施电子政务项目 312 一个项目经理眼中的电子政务建设困境 313 以项目为中心的电子政务 316 流程再造与企业项目化管理 318 企业信息化规划要软硬兼施 320 企业e化项目实施的典型问题及处理 321 如何规避企业信息化建设项目管理中的难题 323 企业边界与边界之外—项目管理是什么 324 企业的项目化管理 326 企业管理的第三条道路 328 企业如何在信息化项目中进行项目范围管理 329 企业信息化项目规划建设八策略 346 企业信息系统项目管理的问题点和对策 348 浅谈项目管理和企业管理的冲突和协调发展 351 权力之争使信息化项目内耗严重 355 如何把握信息化项目管理 356 如何化解信息化阻力 358 如何提高信息化建设项目进度控制 359 如何做好零售企业信息化项目规划 360 通信企业信息化建设中的项目管理 363 以企业信息化项目管理为基础的评价 364 第五篇 多项目管理与计划、范围、资源、协作管理 368 IT项目成功——良好交流必不可少 368 IT项目管理-计划阶段 369 IT项目管理中的团队沟通 371 软件项目规模小 项目经理沟通少 372 项目管理从改变团队开始 373 大型工程项目中的进度管理 376 中国大型建设项目的质量管理和项目管理 380 中小型软件开发项目管理 382 防止软件工程项目范围蔓延的七个步骤 384 某企业IT项目范围管理综述 386 如何做好范围管理? 387 项目范围管理 388 项目范围管理是项目成败的关键 389 项目范围是项目成败的关键 392 糟糕的范围管理导致项目失败 394 论信息系统的需求管理和范围管理 395 项目中如何使用范围变化管理 398 基于过程的软件项目实施方法 399 浅谈项目组合管理 400 如何管理多个IT项目 403 人力资源中的项目管理 405 项目管理计划中的资源储备 406 项目计划进度控制与资源管理 406 项目规划技巧 409 项目计划及质量管理 410 IT项目管理过程-控制 414 IT项目管理过程-跟踪 415 计划与跟踪 416 第六篇 绩效管理 420 绩效管理更注重过程管理 420 如何全面构建企业的绩效管理体系 421 注重项目管理体系建设,提高项目绩效 425 无所不在的绩效管理 435 绩效管理如何事半功倍 436 只有这样才能让绩效考核不走样 437 浅谈企业的绩效沟通 441 典型绩效问题怎样给“猫”分“鱼” 443 第七篇 其他 444 从IT职位到IT角色 444 从技术到管理 445 从优秀IT项目经理到千万富翁的距离只有1m——如何当好项目经理 446 当程序员变成软件项目经理 450 关于我们的思考-项目实例 453 当心最危险的十类IT经理 456 管理大师的思想境界 458 软件文档的必备要素 463 软件项目设计和开发评审指南 463 项目与项目管理软件 465 周伯生教授谈软件研发项目管理 466 我的项目经验总结 469

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值